Ich verwende das folgende Codefragment, um einen Dienst zu beenden. Beide Console.Writeline
-Anweisungen geben jedoch an, dass der Dienst ausgeführt wird. Warum hört der Service nicht auf?Windows-Dienst wird nicht gestoppt/gestartet
Antwort
Sie müssen sc.Refresh()
aufrufen, um den Status zu aktualisieren. Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.stop.aspx.
Außerdem kann es einige Zeit dauern, bis der Dienst beendet wird. Wenn die Methode sofort zurückkehrt, kann es sinnvoll sein, Ihre Shutdown in etwa wie folgt zu ändern:
// Maximum of 30 seconds.
for (int i = 0; i < 30; i++)
{
sc.Refresh();
if (sc.Status.Equals(ServiceControllerStatus.Stopped))
break;
System.Threading.Thread.Sleep(1000);
}
funktioniert. Vielen Dank! – xbonez
Try calling: zu Status-
sc.Refresh();
vor Ihrem Anruf.
Rufen Sie sc.Refresh() auf, bevor Sie den Status überprüfen. Es könnte auch einige Zeit dauern, um aufzuhören.
Haben Sie die richtigen Rechte zum Stoppen/Starten eines Dienstes?
Auf welches Konto führen Sie Ihre Konsolen-App? Administratorrechte?
Haben Sie sc.WaitForStatus versucht? Es kann sein, dass der Service stoppt, aber nicht, wenn Sie Ihre Schreibzeile erreichen.
Ich glaube, Sie sc.stop verwenden sollten, und dann aktualisieren http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.refresh(VS.80).aspx
// If it is started (running, paused, etc), stop the service.
// If it is stopped, start the service.
ServiceController sc = new ServiceController("Telnet");
Console.WriteLine("The Telnet service status is currently set to {0}",
sc.Status.ToString());
if ((sc.Status.Equals(ServiceControllerStatus.Stopped)) ||
(sc.Status.Equals(ServiceControllerStatus.StopPending)))
{
// Start the service if the current status is stopped.
Console.WriteLine("Starting the Telnet service...");
sc.Start();
}
else
{
// Stop the service if its status is not set to "Stopped".
Console.WriteLine("Stopping the Telnet service...");
sc.Stop();
}
// Refresh and display the current service status.
sc.Refresh();
Console.WriteLine("The Telnet service status is now set to {0}.",
sc.Status.ToString());
Versuchen Sie Folgendes:
while (sc.Status != ServiceControllerStatus.Stopped)
{
Thread.Sleep(1000);
sc.Refresh();
}
- 1. BroadcastReceiver wird angerufen, aber PhoneStateListener wird nicht
- 2. Bild wird nicht angezeigt - Programm wird eingefroren
- 3. Schaltfläche klicken Ereignis nicht geändert wird, wird
- 4. Bild wird gespeichert, aber wird nicht geladen
- 5. Seite wird nicht umgeleitet
- 6. NSTableView wird NICHT RELOAD
- 7. GuessAnAnimal wird nicht serialisiert
- 8. Hinweistext wird nicht entfernt
- 9. Aktionsblatt wird nicht gelöscht
- 10. process.existed() wird nicht gefeuert
- 11. Adorner wird nicht angezeigt
- 12. didFinishNavigation nicht aufgerufen wird
- 13. .htaccess wird nicht gelesen
- 14. Hintergrundbild wird nicht angezeigt
- 15. pyOpenGL wird nicht funktionieren
- 16. UpdatePanel wird nicht aktualisiert
- 17. AppDomain.CurrentDomain.UnhandledException wird nicht genannt
- 18. UIProgressView wird nicht aktualisiert?
- 19. StackPanel wird nicht aktualisiert
- 20. commitEditingStyle wird nicht ausgelöst
- 21. pyusb wird nicht installiert
- 22. IntentService wird nicht aufgerufen
- 23. Button wird nicht postback
- 24. Aktivität wird nicht instanziiert
- 25. CustomValidator wird nicht aufgerufen
- 26. Bilddatei nicht gefunden wird
- 27. ListView wird nicht initialisiert
- 28. MFMailComposeViewControllerDelegate wird nicht aufgerufen
- 29. Dialogfeld wird nicht angezeigt
- 30. Bildschirmaufnahmedatei wird nicht gespeichert
Wo Sie Benutzername und Passwort verwenden Sie ?? – Aliostad
Ich benutze es weiter unten im Code, wo ich das Konto und das Passwort für den Dienst ändern. – xbonez