Bonjour,
Désolé pour ce piètre titre mais je n'arrive pas à trouver les bons mot clefs
J'aimerai créer une boucle qui tourne H24 toutes les 1 min pour surveiller une variable précise.
Si cette variable change, j'aimerai effectuer une action puis retourner dans cette boucle pour de nouveau surveiller cette variable.
Je suppose qu'il existe quelque chose dans le genre de prévu dans l'environnement C# pour effectuer faire ça, auriez-vous une piste ?
Je doute que la bonne méthode soit de bêtement effectuer une boucle while... non ?
car si je fais une boucle while, au bout d'un moment la mémoire utilisé de la machine va augmenter petit à petit, non ?
Merci pour votre aide !
Tu peux pas juste faire un évènement ?
Le 20 décembre 2020 à 15:43:51 PrepaDesco a écrit :
Tu peux pas juste faire un évènement ?
Je suis débutant, je vais regarder ce qu'est un évènement ![]()
Tu n'as pas besoin de faire ce genre de choses à la main.
Regarde le design pattern Observer. Les principaux langages l'implémentent et c'est assez facile à utiliser.
Pour C# : https://docs.microsoft.com/fr-fr/dotnet/standard/events/observer-design-pattern
elle est ou cette variable?
Le 20 décembre 2020 à 16:17:04 xidi87 a écrit :
Tu n'as pas besoin de faire ce genre de choses à la main.Regarde le design pattern Observer. Les principaux langages l'implémentent et c'est assez facile à utiliser.
Pour C# : https://docs.microsoft.com/fr-fr/dotnet/standard/events/observer-design-pattern
Je vais check ça aussi également merci
Le 20 décembre 2020 à 17:39:20 godrik a écrit :
elle est ou cette variable?
dans mon main, elle provient d'une api
en bref je veux écouter un get d'une api toutes les minutes et si j'ai une donnée intéressante dans cette variable alors je l'enregistre dans ma base de données et je retourne écouter la variable ensuite
je sais pas si je suis clair, désolé ![]()
Pourquoi pas mettre un point d'arrêt et te mettre en mode debug ?
Tu as même la possibilité de mettre des point d'arrêt conditionnel si tu veux seulement t'arrêter quand elle a une valeur précise ![]()
En faite tu veux faire des appel d’api et stocker l’info quand elle change, du genre récupérer un prix toutes les x minutes
Tu peux utiliser un timer pour ça, si c’est du web (asp) tu as les taches d’arrière plan.
Et voici une bonne illustration de comment, en demandant un conseil technique très précis, on obtient un gros flou car il manque le "pourquoi faire ça ?" ![]()
Si tu veux réagir à un changement de valeur (ou une valeur précise) dans ton propre programme, ce n'est pas la même chose qu'y réagir suivant un appel WS, ni la même chose que sur une page web.
Je te conseille donc d'indiquer pourquoi souhaites-tu "surveiller une variable", car ce n'est pas forcément la bonne solution à ton besoin. Si c'est bien le cas, nous fournir plus de contexte nous permettra de t'aiguiller sur des solutions & implémentations plus correctes et répondant à ton besoin ![]()
Le 20 décembre 2020 à 20:11:27 Bunyan a écrit :
Et voici une bonne illustration de comment, en demandant un conseil technique très précis, on obtient un gros flou car il manque le "pourquoi faire ça ?"Si tu veux réagir à un changement de valeur (ou une valeur précise) dans ton propre programme, ce n'est pas la même chose qu'y réagir suivant un appel WS, ni la même chose que sur une page web.
Je te conseille donc d'indiquer pourquoi souhaites-tu "surveiller une variable", car ce n'est pas forcément la bonne solution à ton besoin. Si c'est bien le cas, nous fournir plus de contexte nous permettra de t'aiguiller sur des solutions & implémentations plus correctes et répondant à ton besoin
+1
Le 20 décembre 2020 à 20:11:27 Bunyan a écrit :
Et voici une bonne illustration de comment, en demandant un conseil technique très précis, on obtient un gros flou car il manque le "pourquoi faire ça ?"Si tu veux réagir à un changement de valeur (ou une valeur précise) dans ton propre programme, ce n'est pas la même chose qu'y réagir suivant un appel WS, ni la même chose que sur une page web.
Je te conseille donc d'indiquer pourquoi souhaites-tu "surveiller une variable", car ce n'est pas forcément la bonne solution à ton besoin. Si c'est bien le cas, nous fournir plus de contexte nous permettra de t'aiguiller sur des solutions & implémentations plus correctes et répondant à ton besoin
Car justement je ne sais pas comment expliquer mon problème de manière précise, sinon google m'aurait déjà aider.
Imaginons que j'ai une api qui me renvoi un nombre. Disons le prix d'un article sur un site, ce site a une api permettant de venir le lire le prix de chaque article. Les prix des articles fluctuent toutes les minutes.
Donc je fais un appel api en boucle pour venir nourrir ma variable et dès que j'ai un prix qui me semble intéressant, hop je l'enregistre dans ma base de données et je retourne surveiller ma variable. (Toutes les minutes je fais un appel API en gros).
Le résultat : J'aurai la date précise (heure, minute etc) de quand mon article aura été le plus bas. C'est un exemple.
Je précise que c'est une appli console C# et que j'ai encore rien commencer à faire. J'essaye de comprendre comment je vais faire d'abord. ![]()
Car j'imagine que si je fais une boucle énorme avec une condition qui fini dans très longtemps, je vais peut-être utiliser trop de mémoire... ?
Je t'ai répondu classe timer
https://docs.microsoft.com/fr-fr/dotnet/api/system.timers.timer?view=net-5.0
pour l'appel d'api http client
https://docs.microsoft.com/fr-fr/dotnet/api/system.net.http.httpclient?view=net-5.0
https://docs.microsoft.com/fr-fr/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client
si t'as pas dapi et tu veux parser de l'html
https://html-agility-pack.net/
Le 20 décembre 2020 à 22:39:27 boucif a écrit :
Je t'ai répondu classe timer
https://docs.microsoft.com/fr-fr/dotnet/api/system.timers.timer?view=net-5.0
pour l'appel d'api http client
https://docs.microsoft.com/fr-fr/dotnet/api/system.net.http.httpclient?view=net-5.0
https://docs.microsoft.com/fr-fr/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-clientsi t'as pas dapi et tu veux parser de l'html
https://html-agility-pack.net/
Je vais me pencher sur le class timer, cimer
Je commencerais demain.
Tout le reste je n'ai pas besoin, l'api provient du site en question. J'ai juste à l'installer et à écrire une ligne de code pour avoir ce que je veux ![]()
Tu veux dire qu’il te fournit la bibliothèque c’est quoi un bloom?
Le 20 décembre 2020 à 23:05:44 boucif a écrit :
Tu veux dire qu’il te fournit la bibliothèque c’est quoi un bloom?
Oui c'est une api publique. Pas compris ta 2ème question ![]()
Un évènement t'aurait été utile si c'était une variable dans ton propre programme. Dans ton cas, il te faut un Timer oui, tout simplement.