2012-02-06 9 views
0

いくつかの設定を行うことができるGUIを持つアプリケーションがあります。設定の1つは、さまざまなソースからのデータ収集が実行される時刻を設定することです。実際の作業を行うWindowsサービスは、現在設定されている時間までスリープするスレッドを実行しています。私の質問はこれですWindowsサービスの時間変更を処理する方法

質問

、私のサービスが眠っていると、誰かがデータ収集を行うときのための時間を変更することを決定した後は、変更された時間のサービスを通知するための最良の方法は何ですか?

私のGUIの部分から、特定のサービスを再起動するようウィンドウに指示することはできますか?またはスレッド割り込みを送信することはできますか?どうしますか?

答えて

1

実行中のアカウントに適切な権限が与えられていれば、GUIが確実にサービスを制御できます。

あなたはこのために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クラスを使用する - これはあなたが見ることができるようになります値が変更されてサービスでリセットされた場合

関連する問題