我正在嘗試編寫無限期運行的Windows服務。用於Linux的Windows窗體和後臺程序看起來並不算太糟糕,但也許我在Windows服務中只是非常無能。不像其他一些睡眠或計時器相關的問題,我已經在這裏挖過,醒來或睡覺的時間可以是一個固定的時間間隔,但並不總是這樣。程序從某些數據文件中讀取數據,這些數據文件可能會指示它更改自己的時間表,並且必須在下一次起牀時生效。這似乎很容易,因爲一個控制檯程序和行爲完全有:C中的可調服務計時器
while (true)
{
// Calculate next time to run.
DateTime nextRun = NextWakeup();
TimeSpan nextTime = nextRun - DateTime.Now;
int sleepMs = (int)nextTime.TotalMilliseconds;
// Sleep until scheduled time
System.Threading.Thread.Sleep(sleepMs);
// Do a code cycle of more stuff here...
}
然而,當我嘗試運行它作爲服務的一部分,使其繼續活躍在用戶註銷時,服務管理器固執地拒絕啓動它。我得到了可愛的1053錯誤,「服務沒有及時響應啓動或控制請求。」
很多答案在這裏有關問題的似乎暗示與在休眠線程的所有費用定時器去。如果我做了這樣的事情而不是休眠/睡眠組合,我將如何去改變每次運行的計時器間隔?或者這一切都很好,我正在設置我的服務是錯誤的?
非常感謝提前!
你嘗試把簡單的代碼和運行服務?解決方案可以用錯誤的方式編譯 –