ServiceController.Stop() doesn't appear to be stopping anything

Posted by peacedog on Stack Overflow See other posts from Stack Overflow or by peacedog
Published on 2010-05-12T13:26:38Z Indexed on 2010/05/13 12:44 UTC
Read the original article Hit count: 344

Filed under:
|
|
|
|

My dev box is a Windows 7 (x64) machine. I've got some code (C#, .net 2.0) that in certain circumstances, checks to see if a service is running and then stops it.

ServiceController matchedService = //My Service!

//If statements and such

matchedService.Stop();
matchedService.WaitForStatus(ServiceControllerStatus.Stopped);

Now, I can verify MyService is in fact installed and running. I can tell you I am running Visual Studio 2008 as an administrator while debugging. I can also verify that after a couple of If statements, I wind up at the .Stop() and .WaitForStatus() portion of the programming. I do know that if step over the .Stop() call, the service itself just keeps running (looking at it in Services, though it occurs to me perhaps I should grab a better tool for this. I'm sure there's some sysinternals tool that might give me more information). As I step over the .WaitForStatus() call, I basically wind up waiting for the stopped status. . . forever. Well, I let it sit there for over 15 minutes yesterday (twice) and nothing happens. We never make it to the next line of code. It feels exactly like Bowie's Space Oddity (you know the part I am talking about).

There's a lotta things about MyService you don't know anything about. Things you wouldn't understand. Things you couldn't. . . let me state this plainly. No services depend on MyService and MyService depends on no other services. Addendum MyOtherService and SonOfMyService both seem to behave correctly at this point in the code. All of these services share the same characteristics (they're our own services we hatched in a secret lab and have no dependencies). Is it possible there is something wrong with the MyService install or something?

I do know that if I stop debugging at this point, MyService is still listed as running in Services (even after hitting refresh). If I try to restart it then (or run my application again and get to this point), I get a message about it not being able to accept control messages. After that, the service shows up as stopped and I can start it normally.

Why isn't the service being stopped? Is this a quirk of win 7? A failing on my part to understand the ServiceController, or Win Services in general?

© Stack Overflow or respective owner

Related posts about c#

Related posts about servicecontroller