Fehler während der windows-Dienst stoppen
Ich arbeite auf Windows-Dienst. Es funktioniert einwandfrei. Wenn ich versuche den Dienst beenden von services.msc
wirft er folgenden Fehler:
Windows konnte nicht aufhören, die xxx-Dienst auf dem Lokalen Computer.
Der Dienst hat keinen Fehler zurückgegeben. Dies kann einen internen Windows-Fehler oder einen internen Dienstfehler handeln.
Wenn das problem weiterhin besteht, Kontaktieren Sie Ihren system-administrator.
Wenn ich versuche zu stoppen Sie es wieder, es nimmt viel Zeit, und wirft dann die Fehlermeldung wie folgt:
Windows konnte nicht aufhören, die xxx-Dienst auf dem Lokalen Computer.
Fehler 1061: Der Dienst kann nicht akzeptieren, control-Nachrichten in dieser Zeit.
Zu diesem Zeitpunkt der Dienst beendet wurde. Aber wenn ich versuche neu zu installieren, den service, es wirft ein weiterer Fehler:
Windows konnte nicht aufhören, die xxx-Dienst auf dem Lokalen Computer.
Error 1001: Der angegebene Dienst ist zum löschen markiert.
Nach dem schließen services.msc
lässt es mich neu installieren, der Dienst-und wieder beginnen die Dinge funktionieren.
In OnStop()
bin ich dabei einige langwierige Vorgänge, und es nimmt Zeit in Anspruch.
Irgendeine Idee, wie ich kann, damit das ganze reibungslos funktioniert?
--Edit--
Dies ist, was mein OnStop
Methode sieht wie folgt aus:
protected override void OnStop()
{
base.OnStop();
//Some lengthy operation
}
InformationsquelleAutor Asdfg | 2011-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den windows-Dienst einen default-timeout in onstart und onstop-Veranstaltungen. Normalerweise, wenn Sie tun zeitaufwändige Operationen in jedem dieser Ereignisse einen neuen thread starten und lassen Sie den Vorgang im hintergrund.
In der Regel die OnStart sowie OnStop-Ereignissen innerhalb der windows-Dienst verwendet, um einen Prozess zu initiieren und den zeitaufwendigen Prozess werden carryout es ist die Ausführung in einem child-thread.
Hoffe, das löst Ihr Problem..
InformationsquelleAutor Harun
Gibt es einen registry-Eintrag, der steuert, wie viel Zeit windows bietet Dienste heruntergefahren ist, bevor Sie aufgeben: http://support.microsoft.com/kb/146092
Trivial, erhöht dieser Zeit würde das Problem beheben, vorausgesetzt, dass der Dienst tatsächlich heruntergefahren nach langen Betrieb.
Ich glaube das nicht. Was ist der service zu tun, der so lange dauert, zu beenden? Kann das optimiert werden?
Es ist eigentlich nur eine Zeile code. Ich bin abonniert, um eine externe Anwendung, die veröffentlicht die Nachrichten. Alles was ich Tue, ist abzubestellen. Abmeldung von es dauert ein wenig lange.
Das klingt nicht Recht. Wenn Sie reißt ein client (stoppen des Dienstes), ich würde Wetten, dass Sie nicht brauchen, um offiziell Abmelden. Der server sollte, im schlimmsten Fall, zu erkennen, dass die TCP-Sitzung beendet hat und beenden das senden der Nachrichten (wie ich es vermuten würde, wenn der Rechner mit der service abgestürzt ist).
Server behält den überblick, wer abonniert ist, und sendet die Nachrichten entsprechend. Wenn ich nicht Abmelden, es wird nicht lassen Sie mich wieder abonnieren. Auch habe ich bemerkt, dass wenn ich Deinstallationsprogramm, es funktioniert gut und tut nicht heben irgendwelche Fehler. Es beendet den Dienst und aus dem system entfernt.
InformationsquelleAutor Chris Shain