2012-02-06 68 views
0

我有一個應用程序,它有一個GUI,您可以在其中進行一些設置。其中一個設置是設置從各種來源收集數據的時間。執行實際工作的Windows服務現在正在運行一個睡眠線程,直到已經設置的時間發生。如何處理Windows服務的時間變化

問題

我的問題是,一旦我的服務正在睡覺,有人決定更改時間時發生了數據收集,什麼是通知的改變時服務的最好方法是什麼?

是否可以從我的GUI部分告訴Windows重新啓動我的特定服務?或者我可以發送一個線程中斷?你會怎麼做?

回答

1

您的圖形用戶界面當然可以控制該服務,只要其運行的帳戶具有正確的權限即可。

可以使用ServiceController類這樣的:

ServiceController sc = new ServiceController("Simple Service"); 
if (sc.Status == ServiceControllerStatus.Stopped) 
{ 
    sc.Start(); 
    while (sc.Status == ServiceControllerStatus.Stopped) 
    { 
     Thread.Sleep(1000); 
     sc.Refresh(); 
    } 
} 

另一種選擇,假定設置存儲在一個文件中使用FileSystemWatcher類監視更改該文件 - 這將讓你看到如果這些值發生變化並在服務中重置它們。

相關問題