OVH Cloud OVH Cloud

Ne pas monopoliser le CPU

3 réponses
Avatar
Philou
Bonjour,
je suis dans une boucle while qui attend une condition. Le problème est que
mon application monopolise 100% du cpu, et ne réagit plus aux controles
utilisateurs.
En VB6, je mettais un doevents et c'était bon. en C#, j'ai essayé de mettre
Application.doEvents(), mais ca n'améliore pas l'occupation CPU...

Quelle est la meilleure solution ? Faut-il utiliser Thread.sleep ? Dans ce
cas, quelle valeur donner à l'intervalle de temps?

Merci d'avance
Cordialement,
Philippe

--
Pour me répondre : philippe (POINT) maire (@) evc (POINT) net
Vive le spam :-)

3 réponses

Avatar
David Alloza
Il faut toujours privilégier l'utilisation d'evenements aux attentes de
conditions. N'y a t'il pas un event qui correspondre a l'entrée que tu
attend ?
Si tu ne peut vraiment pas faire autrement, pour le Sleep, la durée est
en millisecondes. Il faut savoir que le Sleep va mettre en pause ton
programme pour executer les threads de priorité egale ou inférieure (
les threads de de priorité supérieures peuvent couper l'execution de ton
thread de leur propre initiative).
Comme valeur pour ton Sleep, je te conseille de mettre la latence
maximale que tu tolère sur la réponse a ton evenement.
Si, par exemple, tu veut que ton application réponde au 1/50e de seconde
à ce que tu attend, met un une valeur de 20 pour ton Sleep.
Cordialement,
David.


Philou wrote:
Bonjour,
je suis dans une boucle while qui attend une condition. Le problème est que
mon application monopolise 100% du cpu, et ne réagit plus aux controles
utilisateurs.
En VB6, je mettais un doevents et c'était bon. en C#, j'ai essayé de mettre
Application.doEvents(), mais ca n'améliore pas l'occupation CPU...

Quelle est la meilleure solution ? Faut-il utiliser Thread.sleep ? Dans ce
cas, quelle valeur donner à l'intervalle de temps?

Merci d'avance
Cordialement,
Philippe



Avatar
christophe morzadec
il serait plus judicieux d'utiliser les threads pour ton application. Fini
les blocages...

Dimitri
Avatar
JB Deschampheleire
Applications.doEvents();

:) Enjoy


-----Message d'origine-----
il serait plus judicieux d'utiliser les threads pour ton


application. Fini
les blocages...

Dimitri



.