Windows Service stuck on "starting" status as local system account

When I converted my console application to windows service I simply put my code directly in the OnStart method. However, I realized the OnStart method should start the service, but needs to end some time to the service indeed start. So I created a thread that runs my service and let the OnStart method finish. I tested and the service worked just fine. Here is how it was the code:

protected override void OnStart(string[] args)
{
    Listener(); // this method never returns
}

Here is how it worked:

protected override void OnStart(string[] args)
{
    Thread t = new Thread(new ThreadStart(Listener));
    t.Start();
}

But I still don't understand why the service ran (passed the "starting" status, but didn't work) when I used network service account. If anyone knows, I'll be glad to know the reason.


Find PID of Service

sc queryex <SERVICE_NAME>

Give result's below

SERVICE_NAME: Foo.Services.Bar TYPE : 10 WIN32_OWN_PROCESS STATE : 2 0 START_PENDING (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 3976 FLAGS :

Now Kill the Service:

taskkill /f /pid 3976

SUCESS: The process with PID 3976 has been terminated.


If you have a service that is not responding or showing pending in Windows services that you are unable to stop, use the following directions to force the service to stop.

  • Start -> Run or Start -> type services.msc and press Enter
  • Look for the service and check the Properties and identify its service name
  • Once found, open a command prompt. Type sc queryex [servicename]
  • Identify the PID (process ID)
  • In the same command prompt type taskkill /pid [pid number] /f