Export (0) Print
Expand All

ServiceController.WaitForStatus Method (ServiceControllerStatus)

Infinitely waits for the service to reach the specified status.

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

public:
void WaitForStatus (
	ServiceControllerStatus desiredStatus
)
public void WaitForStatus (
	ServiceControllerStatus desiredStatus
)
public function WaitForStatus (
	desiredStatus : ServiceControllerStatus
)

Parameters

desiredStatus

The status to wait for.

Exception typeCondition

InvalidEnumArgumentException

The desiredStatus parameter is not any of the values defined in the ServiceControllerStatus enumeration.

Use WaitForStatus to suspend an application's processing until the service has reached the required status.

NoteNote

The WaitForStatus method waits approximately 250 milliseconds between each status check. WaitForStatus cannot detect the case of the observed service changing to the desiredStatus and then immediately to another status in that interval.

The following example uses the ServiceController class to check whether the Alerter service is stopped. If the service is stopped, the example starts the service and waits until the service status is set to Running.

// Check whether the Alerter service is started.
ServiceController^ sc = gcnew ServiceController;
if ( sc )
{
   sc->ServiceName =  "Alerter";
   Console::WriteLine(  "The Alerter service status is currently set to {0}", sc->Status );
   if ( sc->Status == (ServiceControllerStatus::Stopped) )
   {
      // Start the service if the current status is stopped.
      Console::WriteLine(  "Starting the Alerter service..." );
      try
      {
         // Start the service, and wait until its status is "Running".
         sc->Start();
         sc->WaitForStatus( ServiceControllerStatus::Running );
         
         // Display the current service status.
         Console::WriteLine(  "The Alerter service status is now set to {0}.", sc->Status );
      }
      catch ( InvalidOperationException^ e ) 
      {
         Console::WriteLine(  "Could not start the Alerter service." );
      }
   }
}

// Check whether the Alerter service is started.
ServiceController sc = new ServiceController();
sc.set_ServiceName("Alerter");
Console.WriteLine("The Alerter service status is currently set to {0}",
    sc.get_Status().ToString());

if (sc.get_Status().Equals(ServiceControllerStatus.Stopped)) {
    // Start the service if the current status is stopped.
    Console.WriteLine("Starting the Alerter service...");
    try {
        // Start the service, and wait until its status is 
        // "Running".
        sc.Start();
        sc.WaitForStatus(ServiceControllerStatus.Running);
        // Display the current service status.
        Console.WriteLine("The Alerter service status is now set to {0}.",
            sc.get_Status().ToString());
    }
    catch (InvalidOperationException exp) {
        Console.WriteLine("Could not start the Alerter service.");
    }
}

  • 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

Community Additions

ADD
Show:
© 2014 Microsoft