2011-09-21 3 views
1

Je souhaite utiliser des minuteurs dans mon service. Mais j'ai entendu dire que les minuteurs causaient des problèmes d'interblocage. Supposons que je mette mon minuteur en marche toutes les 10 minutes. Mon service prend 5 minutes pour terminer son exécution en cours. Mais dans certains cas, cela prendra plus de temps (c'est imprévisible). Alors que se passe-t-il si mon service ne peut pas terminer l'exécution actuelle dans les 10 minutes.Un nouvel événement de minuterie se déclenchera ?? Et qu'arrive-t-il à mon exécution actuelle du service? Appréciez votre aide.Timers dans Windows Service

Répondre

2

vous pouvez utiliser des minuteries dans Windows comme il a également déclaré sur MSDN

Une application de service est conçu pour être longue course. En tant que tel, il interroge ou surveille généralement quelque chose dans le système. La surveillance est définie dans la méthode OnStart. Toutefois, OnStart ne fait pas la surveillance. La méthode OnStart doit retourner au système d'exploitation une fois que le service a commencé à fonctionner. Il ne doit pas boucler pour toujours ou bloquer. Pour configurer un mécanisme d'interrogation simple, vous pouvez utiliser le composant System.Timers.Timer. Dans la méthode OnStart, vous devez définir des paramètres sur le composant, puis vous définissez la propriété Enabled sur true. Le temporisateur déclencherait alors périodiquement des événements dans votre code, moment auquel votre service pourrait effectuer sa surveillance. En dépit de ce qui précède, vous devez toujours créer votre logique pour éviter les blocages ou le code spécifié dans l'événement Elapsed prend plus de temps que l'intervalle lui-même. L'événement Elapsed est déclenché sur un thread ThreadPool. Si le traitement de l'événement Elapsed dure plus longtemps que Interval, l'événement peut être relancé sur un autre thread ThreadPool. Ainsi, le gestionnaire d'événements doit être réentrant.

http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.80%29.aspx