我遇到了一個問題,我無法弄清楚我用C#編寫的Windows服務。我試圖做的是等待一個特定的時間段來終止子進程,然後再強迫它終止並停止服務。我已將超時設置爲5到15秒,我的服務會等待適當的時間,然後殺死孩子並在我通過mmc服務窗口停止時停止。但是,如果我關閉計算機,則我的服務會在能夠等待並正常停止之前被吹走。我已經讀過Windows允許在服務關閉之前關閉30秒的超時時間。我的代碼執行時間少於30秒,最大值大約是20秒左右,這取決於我設置的超時時間。強制Windows在關閉時等待服務停止
我已經嘗試在win32 Api中使用SetServiceStatus()函數,但它沒有改變代碼的功能。我已驗證函數調用成功。有沒有其他方法可以強制Windows等待我的服務正常關閉?我正在Windows 7 x86和Windows Vista Sp1 x86中測試它。
+1:*顯然*這裏的解決方案是讓服務花費更少的時間停下來。所以許多應用程序忽略了這一點的重要性。 – 2010-01-08 17:10:19