Pourquoi mon .NET service Windows démarre pas automatiquement, parfois?
J'ai modifié un travail de service Windows, qui avait toujours été de commencer à l'avance. Après l'ajout du Système.De référence de la gestion, il peut ne pas démarrer automatiquement. J'obtiens l'erreur suivante:
Service ne peut pas être démarré.
Système.Moment de l'exécution.InteropServices.COMException
(0x80010002): Appel a été annulé par le
filtre de message. (Exception de
HRESULT: 0x80010002
(RPC_E_CALL_CANCELED))
J'ai trouvé un autre post ici sur avec quelqu'un ayant le même problème.
Pourquoi ne pas en faire mon .Net service Windows démarrer automatiquement après un redémarrage?
Toutefois, la solution proposée a été d'avoir le service de démarrer après les services qu'il dépend de l'avoir commencé. Cependant, lorsque je vais dans l'onglet Dépendances pour mon service, je vois:
Devrais-je utiliser la solution de contournement de la méthode de la mise de la mise en veille du thread, ou est-il un plus bonne façon d'obtenir ce service démarre correctement? Est ce que cela se passe parce que .NET n'a pas commencé avant mon service commence?
Merci,
Tomek
EDIT: j'ai ajouté une instruction try-catch pour intercepter l'exception. Voici le code que j'ai ajouté à la OnStart() la méthode de mon service (qui est l'endroit où l'exception est levée)
try
{
_watcher = new ManagementEventWatcher(query);
_watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
_watcher.Start();
}
catch (Exception ex)
{
EventLog.WriteEntry("Could not create Sleep/Resume watcher" + ex.Message);
}
Le service ne démarre maintenant, mais sans les fonctionnalités que j'ai ajouté. Je suis nouvelle dans .NET, mais j'ai pris l'observateur de code à partir d'un échantillon que j'ai trouvé en ligne, donc je suis assez sûr qu'il est correct. Le Journal des Événements affiche la même exception:
N'a pas pu créer de Sommeil/Reprendre l'observateur d'Appel a été annulé par le filtre de message. (Exception de HRESULT: 0x80010002 (RPC_E_CALL_CANCELED))
Puisque vous avez maintenant utiliser WMI, vous devriez probablement attendre le Service Windows Management Instrumentation pour commencer. Essayez de l'ajouter à des services dépendants sur le temps d'installation.
OriginalL'auteur Tomek | 2010-03-08
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème moi-même et, apparemment, il ne se produit que sur Windows XP (pas sur Vista ou Win 7).
Pour corriger cela, vous devez ajouter une dépendance pour le service Windows Management Instrumentation.
L'ajout de cette dépendance à votre service existant se fait en trois étapes simples:
Redémarrez votre ordinateur et de votre service devrait maintenant démarrer correctement.
OriginalL'auteur Jonathan Persson
Le problème n'est pas avec le service lui-même, c'est que le nouveau composant que vous avez ajouté une référence à l'est de lancer une exception non gérée (Appel a été annulé par le filtre de message). Résoudre ce message d'erreur avec le code que vous avez ajouté, et/ou de les mettre dans une meilleure gestion des erreurs, de sorte qu'une erreur dans le composant ne sera pas de bulle vers le haut et provoquer l'arrêt du service 🙂
OriginalL'auteur Joel Martinez
Si vous dépendez d'un autre service, nous sc.exe pour configurer votre service à démarrer après la dépendance. Cela ne peut pas être fait par les Services de l'applet.
OriginalL'auteur Timores
J'ai fini à l'aide de Fil.Sleep(10000) juste avant que je créer les ManagementEventWatcher (avant l'instruction try)
Il est une sorte de solution de contournement, mais il n'a résoudre le problème.
OriginalL'auteur Tomek