2010-05-12 39 views
0

我的開發盒是Windows 7(x64)機器。我有一些代碼(C#,.net 2.0),在某些情況下,檢查服務是否正在運行,然後停止它。ServiceController.Stop()似乎不會停止任何操作

ServiceController matchedService = //My Service! 

//If statements and such 

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

現在,我可以驗證MyService是否已安裝並正在運行。我可以告訴你,我在調試時以管理員身份運行Visual Studio 2008。我還可以驗證在幾個語句之後,我將編程的.Stop()和.WaitForStatus()部分結束。我知道,如果跨過.Stop()調用,服務本身只是繼續運行(看它在服務,雖然它發生在我身上,或許我應該爲此獲取更好的工具。 sysinternals工具,可能會給我更多的信息)。當我跨過.WaitForStatus()調用時,基本上已經等待停止狀態。 。 。永遠。那我昨天讓它坐在那裏超過15分鐘(兩次),沒有任何反應。我們從來沒有把它做到下一行代碼。這感覺完全像鮑伊的太空奇蹟(你知道我說的那部分)。

有很多關於MyService的事情你都不瞭解。你不明白的事情。你不能做的事情。 。 。讓我清楚地陳述這一點。沒有服務依賴於MyService,MyService不依賴於其他服務。 附錄 MyOtherService和SonOfMyService在代碼中的這一點似乎都表現正確。所有這些服務都具有相同的特徵(它們是我們在祕密實驗室孵化的我們自己的服務,並且沒有依賴關係)。是否有可能有MyService安裝有問題嗎?

我確實知道,如果此時我停止調試,MyService仍會列爲運行在服務(即使刷新後)。如果我嘗試重新啓動它(或再次運行我的應用程序併到達這一點),我收到一條消息,指出它無法接受控制消息。之後,該服務顯示爲已停止,並且可以正常啓動。

爲什麼不停止服務?這是贏7的怪癖嗎?我無法理解ServiceController或一般的Win服務?

回答

0

經過進一步調查,我認爲這是服務本身的問題。