ServiceBase.OnStop Method

When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). Specifies actions to take when a service stops running.

Namespace: System.ServiceProcess
Assembly: System.ServiceProcess (in system.serviceprocess.dll)

protected virtual void OnStop ()
protected void OnStop ()
protected function OnStop ()

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 override void OnStop()
            // New in .NET Framework version 2.0.
            // Signal the worker thread to exit.
            if ((workerThread != null) && (workerThread.IsAlive))
                EventLog.WriteEntry("SimpleService.OnStop", DateTime.Now.ToLongTimeString() +
                    " - Stopping the service worker thread.");

            if (workerThread != null)
                EventLog.WriteEntry("SimpleService.OnStop", DateTime.Now.ToLongTimeString() +
                    " - OnStop Worker thread state = " +
            // Indicate a successful exit.
            this.ExitCode = 0;

  • Full trust for the immediate caller. This member cannot be used by partially trusted code. For more information, see .

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

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0