Meilleure façon de faire une tâche en boucle le Service Windows

J'ai une méthode qui envoyer quelques SMS à nos clients que cherchez comme ci-dessous:

public void ProccessSmsQueue()
{
   SmsDbContext context = new SmsDbContext();
   ISmsProvider provider = new ZenviaProvider();
   SmsManager manager = new SmsManager(context, provider);

   try
   {
      manager.ProcessQueue();
   }
   catch (Exception ex)
   {
      EventLog.WriteEntry(ex.Message, EventLogEntryType.Error);
   }
   finally
   {
      context.Dispose();
   }
}

protected override void OnStart(string[] args)
{
   Task.Factory.StartNew(DoWork).ContinueWith( ??? )
}

J'ai donc quelques questions:

  1. Je ne sais pas combien de temps il faut pour la méthode à exécuter;

  2. La méthode peut lever des exceptions, que je veux écrire sur EventLog

  3. Je veux exécuter cette méthode en boucle, toutes les 10 min, mais seulement après la dernière exécution de la finition.

Comment je peux faire? J'ai pensé à utiliser ContinueWith(), mais j'ai encore des questions sur la façon de construire l'ensemble de la logique.

  • Pourquoi voulez-vous le faire à l'aide d'un Task à tous? Pourquoi ne pas utiliser un Timer?
  • À l'aide d'une minuterie, il faudrait que je contrôle le démarrage et l'arrêt à chaque fois que l'événement a été déclenché. J'ai pensé à cette solution, mais elle ne semble pas la plus élégante.
  • Qu'en est simplement à l'aide d'une boucle?
  • Car il sera exécuté de manière synchrone. J'ai besoin d'un mélange de async/sync.
InformationsquelleAutor GuFigueiredo | 2014-11-28