Assembly: System.ServiceProcess (in system.serviceprocess.dll)
Use OnStop to specify the processing that occurs when the service receives a Stop command.
When the SCM receives a Stop command, it uses the value of CanStop to verify whether the service accepts Stop commands. If CanStop is true, the Stop command is passed to the service, and the OnStop method is called if it is defined. If OnStop is not implemented in the service, the SCM handles the Stop command.
If CanStop is false, the SCM ignores the Stop command. It is not passed to the service. The Stop command returns and throws an exception.
OnStop is expected to be overridden in the derived class. For the service to be useful, OnStart and OnStop should both be implemented in your service class.
The following example shows an implementation of the OnStop method for a service class derived from ServiceBase. This code example is part of a larger example provided for the ServiceBase class.
' 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