Comment empêcher un événement de minuterie C # System.Timers de Blocking Events ultérieurs?
-
23-12-2019 - |
Question
J'ai une application C # qui utilise une minuterie System.Timers qui appelle à plusieurs reprises une fonction.Le problème est, en fonction de la charge de travail, si le traitement d'un appel de fonction atteint un certain pourcentage d'utilisation de la CPU (98-100%), tout événement ultérieur est bloqué.
existe-t-il un moyen d'empêcher un tel scénario afin que les événements ne soient pas bloqués?
Par exemple, le gestionnaire d'événements de la minuterie est une fonction qui exécute un code dynamique, ce qui peut prendre un certain temps et de ressources pour traiter.Au cours de ce traitement, un booléen est défini sur True, ce qui provoque des appels d'événements ultérieurs à écrire dans un fichier journal.Une fois le traitement d'un événement atteint une utilisation élevée de la CPU, cependant, des événements supplémentaires n'écriront pas au fichier journal.
La solution
Oui, définissez la propriété des minuteries Autoreset sur TRUE.
Lire: https://msdn.microsoft.com/en-us/library/system.timers.timer(v=VS.110).aspx