我一直在做一些廣泛的測試,我一直在用C#.Net 3.5編寫Windows服務。即使我正在調用RequestAdditionalTime()方法,它應該更新SCM並保持我的服務正在運行,但在重新啓動或關閉計算機時,我無法讓Windows爲我的服務提供足夠的時間來正常關閉服務。但是,如果我手動停止服務,我的代碼正常工作。我主要一直在Windows Vista和Windows 7中測試此代碼,決定在Windows XP中測試代碼時一切正常。有誰知道爲什麼這個調用在Vista/7中不起作用?我想我需要一些權限來保持系統關閉,我默認在Xp中獲得,但不是在Vista/7中。爲什麼在Vista/7中重新啓動RequestAdditionalTime()方法時不起作用?
回答
如果系統沒有關閉,您的服務可以請求額外的時間,您的進程不會被殺死。
如果系統關閉,您的服務必須關閉。你甚至沒有得到正常服務的30秒。關機比以前更有力。
在非停機的情況下,RequestAdditionalTime()必須往往比每2分鐘叫:
protected override void OnStop()
{
Thread.Sleep(60000);
RequestAdditionalTime(180000);
Thread.Sleep(60000);
RequestAdditionalTime(180000);
Thread.Sleep(5000);
}
注意,雖然名稱,時間參數要求的總關機時間。
你有參考時間參數的含義嗎?它沒有在MSDN上列出。 –
@David:這是一年前的事,但我記得它是從測試中推導出來的。 –
這在Windows 7中不起作用(但在此配置)。另外,這個例子沒有清楚地說明更多的時間,因爲默認值是120s(這裏),只顯示了〜125s的睡眠時間。 – user2864740
西蒙巴肯的回答起的2分鐘鏈接被稱爲我的Microsoft這裏:http://connect.microsoft.com/VisualStudio/feedback/details/96460/servicebase-requestadditionaltime-has-no-impact-on-start-timeout
雖然這可能會在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包含答案的重要部分,並提供供參考的鏈接。 –
- 1. 爲什麼在啓動時睡眠不起作用?
- 2. 爲什麼方法不起作用?
- 3. 爲什麼integerValidation方法不起作用?
- 4. 爲什麼log4javascript.trace方法不起作用?
- 5. 爲什麼.downto方法不起作用?
- 6. 爲什麼focus()方法不起作用?
- 7. 爲什麼datamapper方法不起作用?
- 8. 爲什麼didrecivedlocalnotification方法不起作用?
- 9. 爲什麼POST方法不起作用?
- 10. 爲什麼此方法不起作用?
- 11. 爲什麼class.click方法不起作用?
- 12. 爲什麼方法重載在另一個方法中不起作用?
- 13. 爲什麼requestAnimationFrame不重新啓動?
- 14. 重新啓動調度不起作用
- 15. 爲什麼Eclipse在工作區切換時重新啓動?
- 16. AppWidget PendingIntent在啓動器重新啓動後不起作用
- 17. 爲什麼toString方法在覆蓋時不起作用?
- 18. 重載方法?爲什麼這個功能不起作用?
- 19. 爲什麼Charles Proxy在啓用SSL時不起作用?
- 20. 爲什麼這個擴展方法在Rails中不起作用?
- 21. 爲什麼JTextField的setText在actionPerformed方法中不起作用?
- 22. 爲什麼WriteToFile方法在(IBAction)中不起作用btnClicked:(id)sender?
- 23. 爲什麼我在linq中的orderby方法不起作用?
- 24. 爲什麼__construct方法在FOSUserBundle的User Entity中不起作用?
- 25. 爲什麼save_model方法在admin.StackedInline中不起作用?
- 26. 爲什麼setContentOffset在scrollViewDidEndDragging方法中不起作用?
- 27. 爲什麼方法級別驗證在Spring中不起作用?
- 28. 爲什麼scala方法在逐行序列中不起作用?
- 29. 爲什麼getSize()方法在Android Studio中不起作用?
- 30. 爲什麼$ .post方法在IE中不起作用?
有沒有辦法知道的時候你的服務將得到關機量,當你關機或重新啓動計算機?我知道W7中的WaitToKillServiceTimeout設置爲12000,Vista中的Xp設置爲20000。但即使您在W7或Vista中更改此值,也幾乎沒有影響。特別是在Windows 7中,它會在幾秒鐘內跺腳你的服務。感謝您的洞察力。 –
我覺得沒有辦法知道。假設Windows允許13秒關閉所有服務。某些其他服務需要12秒的CPU時間(因此其他服務在此期間無法執行),最後關閉。剩下的只剩下1秒鐘。 Windows將會殺死他們。 –