Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Timer et traitement long

4 réponses
Avatar
Triton03
Bonjour, j'essaye de faire un programme pour monitorer des applications
diverses. Toutes les 30 secondes (le temps n'a pas besoin du tout d'être
précis), je voudrais faire des requêtes dans des tables de log par exemple.
J'ai constaté en utilisant le composant Timer (en C#), que le traitement
dans le tick du timer ne se finissait pas. Or, mon intervalle étant de 30s,
j'ai largement le temps il me semble, de faire mes quelques requêtes.

Est-ce déjà la bonne méthode d'utiliser un timer dans ce cas ? Si oui, est
ce quelqu'un a déjà constaté ce genre de pb ? Je trouve pas mal d'infos sur
les timers mais toujours pour des traitements très courts dans les ticks.

4 réponses

Avatar
DVDB
Dans la version 2.0 du Framework, il existe un composant BackGroundWorker qui
pourrait être intéressant car il permettrait de lancer un nouveau thread qui
ferait les requetes puis afficherait le résultat.

Indépendemment de ça, avez-vous essayé d'augmenter la durée de 30 secondes
à, disons, un minute. Même symptômes?
30 Secondes paraissent quand même long pour exécuter "quelques" requetes...


"Triton03" a écrit :

Bonjour, j'essaye de faire un programme pour monitorer des applications
diverses. Toutes les 30 secondes (le temps n'a pas besoin du tout d'être
précis), je voudrais faire des requêtes dans des tables de log par exemple.
J'ai constaté en utilisant le composant Timer (en C#), que le traitement
dans le tick du timer ne se finissait pas. Or, mon intervalle étant de 30s,
j'ai largement le temps il me semble, de faire mes quelques requêtes.

Est-ce déjà la bonne méthode d'utiliser un timer dans ce cas ? Si oui, est
ce quelqu'un a déjà constaté ce genre de pb ? Je trouve pas mal d'infos sur
les timers mais toujours pour des traitements très courts dans les ticks.


Avatar
Triton03
Oui, même à une minute de laps de temps, j'ai les mêmes symptômes. C'est sûr
que c très large pour les requêtes, si je les fait indépendammment, elles ne
doivent pas prendre plus de 1 ou 2 secondes.
Je crois que je vais me rabattre effectivement sur le BackGroundWorker.

Merci

"DVDB" a écrit :

Dans la version 2.0 du Framework, il existe un composant BackGroundWorker qui
pourrait être intéressant car il permettrait de lancer un nouveau thread qui
ferait les requetes puis afficherait le résultat.

Indépendemment de ça, avez-vous essayé d'augmenter la durée de 30 secondes
à, disons, un minute. Même symptômes?
30 Secondes paraissent quand même long pour exécuter "quelques" requetes...


"Triton03" a écrit :

> Bonjour, j'essaye de faire un programme pour monitorer des applications
> diverses. Toutes les 30 secondes (le temps n'a pas besoin du tout d'être
> précis), je voudrais faire des requêtes dans des tables de log par exemple.
> J'ai constaté en utilisant le composant Timer (en C#), que le traitement
> dans le tick du timer ne se finissait pas. Or, mon intervalle étant de 30s,
> j'ai largement le temps il me semble, de faire mes quelques requêtes.
>
> Est-ce déjà la bonne méthode d'utiliser un timer dans ce cas ? Si oui, est
> ce quelqu'un a déjà constaté ce genre de pb ? Je trouve pas mal d'infos sur
> les timers mais toujours pour des traitements très courts dans les ticks.


Avatar
Bill Dez
In article ,
says...
Oui, même à une minute de laps de temps, j'ai les mêmes symptômes . C'est sûr
que c très large pour les requêtes, si je les fait indépendammment, elles ne
doivent pas prendre plus de 1 ou 2 secondes.
Je crois que je vais me rabattre effectivement sur le BackGroundWorker.




Salut,

Tu utilise un interface graphique je suppose pour monitorer? si c'est le
cas, tu utilises aussi des delegates pour rafraichir ton affichage, non?
Car si ce n'est pas le cas, ton affichage risque de ne pas de
rafraichir...

Autre truc, tu peux aussi utiliser System.Threading.Thread.Sleep(100);
ou 100 est le nombre de millisecondes que tu souhaites attendre.
Avatar
Jérôme Bonnet
Le composant Timer convient pour les tâches rapides. Dans ton cas,
j'utiliserais BackGroundWorker ou bien un thread quelconque.

Dans la boucle d'execution du thread, je lance ma tache puis je fais
patienter XXX secondes grâce à Thread.Sleep . Pour notifier chaque fin
d'execution de la tâche, tu peux publier un message grâce à l'évênement
ProgressChanged , et ce, en ayant activé la propriété SupportReportProgress
à true.

Jerome


"Triton03" a écrit dans le message de
news:
Bonjour, j'essaye de faire un programme pour monitorer des applications
diverses. Toutes les 30 secondes (le temps n'a pas besoin du tout d'être
précis), je voudrais faire des requêtes dans des tables de log par
exemple.
J'ai constaté en utilisant le composant Timer (en C#), que le traitement
dans le tick du timer ne se finissait pas. Or, mon intervalle étant de
30s,
j'ai largement le temps il me semble, de faire mes quelques requêtes.

Est-ce déjà la bonne méthode d'utiliser un timer dans ce cas ? Si oui, est
ce quelqu'un a déjà constaté ce genre de pb ? Je trouve pas mal d'infos
sur
les timers mais toujours pour des traitements très courts dans les ticks.