fond travailleur avec le service windows
Je suis de la création d'un service windows dans Visual Studio 2010 avec C# et j'ai quelques méthodes comme Add
, Multiply
et d'autres, dont je suis en train de mettre dans la onStart
méthode. Maintenant, je veux que ces méthodes de courir après toutes les cinq minutes. Alors comment serait un arrière-plan de processus de travail pour m'aider dans ce?
protected override void OnStart(string[] args)
{
add(); //yes, it doesn't have parameters
}
- Je pense que
System.Timers.Timer
est susceptible d'être plus utile. Un arrière-plan travailleur est utile pour faire un travail dans un autre thread, sans bloquer le courant (comme le thread d'INTERFACE utilisateur). - ok merci, laissez-moi aller de l'avant avec des minuteries alors
- Probablement, vous pouvez consulter ce - programmers.stackexchange.com/questions/80997/...
- Si vous allez avoir besoin de précision (par exemple, La méthode doit s'exécuter après n minutes), essayez de Quartz.NET: google.co.dans/...
- Je crois piyush va le faire dans un service Windows, donc il pourrait peut-être utiliser le Système.Le filetage.Minuterie
Vous devez vous connecter pour publier un commentaire.
De la minuterie est le choix le plus adapté. J'ai légèrement d'une version améliorée qui prend soin de l'arrêt de la minuterie dans la méthode OnStop.
dans votre programme.cs, je voudrais faire les choses suivantes pour faire un débogage plus facile:
Puis, dans votre Service1.cs code:
Par la définition de la #DEBUG var dans vos options de compilation que vous permettez-vous d'exécuter le code
en tant que programme, puis lorsque vous êtes prêt à tester votre arrêt logique, il suffit de briser tous et
jeu fait pour le vrai. J'ai été en utilisant cette méthode depuis des années avec beaucoup de succès.
Comme commenté dans le code, si vous faites n'importe quoi long de votre événement de minuterie, vous pouvez surveiller à partir de la OnStop pour s'assurer qu'il dispose de suffisamment de temps si l'arrêt au milieu de choses.
Envelopper ces fonction dans une classe et de créer un Système.Les minuteries.Timer() dans la classe et appeler toutes ces fonctions de minuterie. Appel de la fonction Start() de la classe exemple NewClass sur
OnStart
du service.Une autre solution possible avec Backgroundworker: