This documentation is archived and is not being maintained.

ServiceBase.OnCustomCommand Method

When implemented in a derived class, OnCustomCommand executes when the Service Control Manager (SCM) passes a custom command to the service. Specifies actions to take when a command with the specified parameter value occurs.

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

Protected Overridable Sub OnCustomCommand ( _
	command As Integer _
Dim command As Integer

protected void OnCustomCommand (
	int command
protected function OnCustomCommand (
	command : int



The command message sent to the service.

OnCustomCommand lets you specify additional functionality beyond starting, stopping, pausing and continuing services.

The SCM does not examine the custom command to verify whether the service supports the command parameter passed in. It passes the custom command directly to the service. If the service does not recognize the command parameter, it does nothing.

Custom commands are raised by an ExecuteCommand statement in a ServiceController component. Use a switch statement or if..then condition to handle the custom commands you define on your service.

The only values for a custom command that you can define in your application or use in OnCustomCommand are those between 128 and 256. Integers below 128 correspond to system-reserved values.

If the AutoLog property is true, custom commands, like all other commands, write entries to the event log to report whether the method execution succeeded or failed.

The following example shows an implementation of the OnCustomCommand method for a service class derived from ServiceBase. This code example is part of a larger example provided for the ServiceBase class.

    ' Handle a custom command.
    Protected Overrides Sub OnCustomCommand(ByVal command As Integer)
        System.Diagnostics.EventLog.WriteEntry("SimpleService.OnCustomCommand", DateTime.Now.ToLongTimeString() + _
            " - Custom command received: " + command.ToString())
#End If

        ' If the custom command is recognized,
        ' signal the worker thread appropriately.
        Select Case command
            Case Fix(SimpleServiceCustomCommands.StopWorker)
                ' Signal the worker thread to terminate.
                ' For this custom command, the main service
                ' continues to run without a worker thread.

            Case Fix(SimpleServiceCustomCommands.RestartWorker)

                ' Restart the worker thread if necessary.

            Case Fix(SimpleServiceCustomCommands.CheckWorker)
                ' Log the current worker thread state.
                System.Diagnostics.EventLog.WriteEntry("SimpleService.OnCustomCommand", _
                    DateTime.Now.ToLongTimeString() + _
                    " OnCustomCommand - Worker thread state = " + _
#End If

            Case Else
                System.Diagnostics.EventLog.WriteEntry("SimpleService.OnCustomCommand", _
#End If
        End Select

    End Sub 'OnCustomCommand

  • 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