.NET Service Windows avec minuterie cesse de répondre

J'ai un service windows écrit en c#. Il dispose d'une minuterie à l'intérieur, qui se déclenche certaines fonctions sur une base régulière. Donc le squelette de mon service:

public partial class ArchiveService : ServiceBase
{
    Timer tickTack;
    int interval = 10;
    ...

    protected override void OnStart(string[] args)
    {
        tickTack = new Timer(1000 * interval);

        tickTack.Elapsed += new ElapsedEventHandler(tickTack_Elapsed);
        tickTack.Start();
    }

    protected override void OnStop()
    {            
        tickTack.Stop();
    }    

    private void tickTack_Elapsed(object sender, ElapsedEventArgs e)
    {
        ...
    }
}

Il travaille depuis un certain temps (comme les 10 à 15 jours), puis il s'arrête. Je veux dire que le service affiche comme la course, mais il ne fait rien. - Je faire de l'abattage et le problème peut être la minuterie, parce que, après l'intervalle, il n'appelle pas la tickTack_Elapsed fonction.

Je pensais à le réécrire sans une minuterie, à l'aide d'une boucle, ce qui arrête le traitement pour la quantité de temps que j'ai mis en place. Ce n'est pas non plus une solution élégante et je pense qu'il peut avoir certains effets secondaires concernant la mémoire.

La Minuterie est utilisée dans le Système.Minuteries d'espace de noms, l'environnement est Windows 2003. J'ai utilisé cette approche dans deux services différents sur des serveurs différents, mais les deux est la production de ce comportement (c'est pourquoi j'ai pensé que c'est en quelque sorte lié à mon code ou le framework lui-même).

N'quelqu'un a connu ce problème? Quel est le problème?


Edit:

J'ai édité les deux services. On a obtenu une belle try-catch partout et de plus en plus de l'exploitation forestière. La deuxième a un timer de loisirs, sur une base régulière. Aucun d'entre eux cessé, depuis, de sorte que si cette situation reste pour une autre semaine, je vais fermer cette question. Je vous remercie pour tout le monde jusqu'à présent.


Edit:

Je ferme cette question, parce que rien ne s'est passé. Je veux dire, j'ai fait quelques changements, mais ces changements ne sont pas vraiment pertinent dans cette affaire et les deux services sont en cours d'exécution sans aucun problème depuis. S'il vous plaît marquer comme "Fermé pour ne pas pertinente".

  • Il n'y a rien dans le journal des événements après le minuteur s'arrête en cours d'exécution?
  • Rien du tout. Je peux attraper le tickTack_Elapsed fonction, mais il n'est pas appelé plus. Ainsi, le journal indique que le démarrage du service que j'ai obtenu des événements toutes les 10 minutes, mais après un moment il s'arrête sans message d'erreur ou quoi que ce soit d'autre. Puis-je me connecter en quelque sorte plus de détails?
  • ne fermez pas la question, parce que d'autres peuvent trouver l'information utile; accepter une réponse à la place
InformationsquelleAutor Biri | 2008-12-29