Frage

Meine dev-Box ist ein Windows 7 (x64) Maschine. Ich habe einige Code bekam (C #, .net 2.0), dass unter bestimmten Umständen überprüft, ob ein Dienst läuft, und dann hält er an.

ServiceController matchedService = //My Service!

//If statements and such

matchedService.Stop();
matchedService.WaitForStatus(ServiceControllerStatus.Stopped);

Jetzt kann ich überprüfen MyService tatsächlich installiert ist und läuft. Ich kann Ihnen sagen, dass ich Visual Studio 2008 als Administrator leite während des Debuggens. Ich kann auch überprüfen, dass nach ein paar Wenn Aussagen, ich aufzuwickeln am .Stop () und .WaitForStatus () Teil der Programmierung. Ich weiß, dass, wenn der Schritt über den .Stop () Aufruf, der Dienst selbst hält gerade läuft (es bei der Suche in Diensten , wenn es mir einfällt, vielleicht soll ich ein besseres Werkzeug für diese greifen. I ‚m sicher, dass es einige Sysinternals-Tool, das mir mehr Informationen geben könnte). Als ich die .WaitForStatus () -Aufruf Schritt über, ich aufzuwickeln grundsätzlich für den gestoppten Status wartet. . . für immer. Nun, ich lassen Sie es sich dort für über 15 Minuten gestern (zweimal) und nichts passiert. Wir machen es nie in die nächste Zeile des Codes. Es fühlt sich genau wie Bowies Space Oddity (Sie wissen, die Teil ich rede).

Es gibt ein lotta Dinge über MyService Sie wissen nichts über. Dinge, die Sie nicht verstehen würde. Die Dinge könnten Sie nicht. . . Lassen Sie mich diese deutlich angeben. Keine Dienste hängen von MyService und MyService hängt von keiner anderen Dienstleistungen. Nachtrag MyOtherService und SonOfMyService scheinen beide korrekt im Code an dieser Stelle zu verhalten. Alle diese Dienste teilen die gleichen Eigenschaften (sie unsere eigenen Dienstleistungen sind wir in einem geheimen Labor ausgebrütet und keine Abhängigkeiten haben). Ist es möglich, es ist etwas falsch mit dem MyService installieren oder etwas?

Ich weiß, dass, wenn ich an dieser Stelle des Debuggen stoppen, MyService noch als Lauf in aufgeführt ist Dienstleistungen (auch nach der Kollision mit Refresh). Wenn ich versuche, es neu zu starten, dann (oder meine Anwendung erneut ausführen und auf diesen Punkt gelangen), erhalte ich eine Meldung darüber keine Steuerungsmeldungen in der Lage zu akzeptieren. Danach werden die Service zeigt sich als gestoppt und ich kann es normal starten.

Warum wird der Dienst beendet wird? Ist das eine Marotte von win 7? Ein von mir versagt im Allgemeinen die Servicecontroller oder Win Dienstleistungen zu verstehen?

War es hilfreich?

Lösung

Nach einem weiteren Untersuchung, ich glaube, das ist ein Problem mit dem Dienst selbst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top