ServiceBase.OnStop-Methode
Wird bei der Implementierung in einer abgeleiteten Klasse ausgeführt, wenn der Dienststeuerungs-Manager einen Befehl zum Beenden an den Dienst sendet. Gibt Aktionen an, die beim Beenden eines Diensts auszuführen sind.
Namespace: System.ServiceProcess
Assembly: System.ServiceProcess (in system.serviceprocess.dll)
Syntax
'Declaration
Protected Overridable Sub OnStop
'Usage
Me.OnStop
protected virtual void OnStop ()
protected:
virtual void OnStop ()
protected void OnStop ()
protected function OnStop ()
Hinweise
Geben Sie mit OnStop, welche Verarbeitung ausgeführt wird, wenn der Dienst einen Befehl zum Beenden erhält.
Wenn der Dienststeuerungs-Manager einen Befehl zum Beenden empfängt, überprüft er anhand des Werts von CanStop, ob der Dienst Befehle zum Beenden zulässt. Wenn CanStoptrue ist, wird der Befehl zum Beenden an den Dienst übergeben und die OnStop-Methode aufgerufen, sofern diese definiert ist. Wenn OnStop im Dienst nicht implementiert ist, verarbeitet der Dienststeuerungs-Manager den Befehl zum Beenden.
Wenn CanStopfalse ist, ignoriert der Dienststeuerungs-Manager den Befehl zum Beenden. Er wird nicht an den Dienst übergeben. Der Befehl zum Beenden wird zurückgegeben und löst eine Ausnahme aus.
OnStop muss in der abgeleiteten Klasse überschrieben worden sein. Damit der Dienst sinnvoll angewendet werden kann, muss sowohl OnStart als auch OnStop in der Dienstklasse implementiert werden.
Beispiel
Im folgenden Beispiel wird eine Implementierung der OnStop-Methode für eine von ServiceBase abgeleitete Dienstklasse veranschaulicht. Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels für die ServiceBase-Klasse.
' Stop this service.
Protected Overrides Sub OnStop()
' New in .NET Framework version 2.0.
Me.RequestAdditionalTime(4000)
' Signal the worker thread to exit.
If Not (workerThread Is Nothing) AndAlso workerThread.IsAlive Then
#If LOGEVENTS Then
System.Diagnostics.EventLog.WriteEntry("SimpleService.OnStop", DateTime.Now.ToLongTimeString() + _
" - Stopping the service worker thread.")
#End If
pause.Reset()
Thread.Sleep(5000)
workerThread.Abort()
End If
If Not (workerThread Is Nothing) Then
#If LOGEVENTS Then
System.Diagnostics.EventLog.WriteEntry("SimpleService.OnStop", DateTime.Now.ToLongTimeString() + _
" - OnStop Worker thread state = " + workerThread.ThreadState.ToString())
#End If
End If
' Indicate a successful exit.
Me.ExitCode = 0
End Sub 'OnStop
// Stop this service.
protected override void OnStop()
{
// New in .NET Framework version 2.0.
this.RequestAdditionalTime(4000);
// Signal the worker thread to exit.
if ((workerThread != null) && (workerThread.IsAlive))
{
#if LOGEVENTS
EventLog.WriteEntry("SimpleService.OnStop", DateTime.Now.ToLongTimeString() +
" - Stopping the service worker thread.");
#endif
pause.Reset();
Thread.Sleep(5000);
workerThread.Abort();
}
if (workerThread != null)
{
#if LOGEVENTS
EventLog.WriteEntry("SimpleService.OnStop", DateTime.Now.ToLongTimeString() +
" - OnStop Worker thread state = " +
workerThread.ThreadState.ToString());
#endif
}
// Indicate a successful exit.
this.ExitCode = 0;
}
// Stop this service.
protected:
virtual void OnStop() override
{
// Signal the worker thread to exit.
if ( (workerThread != nullptr) && (workerThread->IsAlive) )
{
Trace::WriteLine( DateTime::Now.ToLongTimeString() + " - Stopping the service worker thread.", "OnStop" );
workerThread->Abort();
// Wait up to 500 milliseconds for the thread to terminate.
workerThread->Join( 500 );
}
if ( workerThread != nullptr )
{
Trace::WriteLine( DateTime::Now.ToLongTimeString() + " - Worker thread state = " + workerThread->ThreadState.ToString(), "OnStop" );
}
}
.NET Framework-Sicherheit
- Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter .
Plattformen
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
ServiceBase-Klasse
ServiceBase-Member
System.ServiceProcess-Namespace
CanStop
OnContinue
OnPowerEvent
OnPause
OnShutdown
OnStart
OnCustomCommand