質問: Windowsサービスの時間の変更を処理する方法 私はいくつかの設定を行うことができるGUIを持つアプリケーションを持っています。設定の1つは、さまざまなソースからのデータ収集が実行される時刻を設定することです。実際の作業を行うWindowsサービスは、現在設定されている時間までスリープするスレッドを実行しています。 **質問** 私の質問は、私のサービスが寝ていて誰かがデータ収集が行われるべき時間を変更することに決めたら、変更された時間をサービスに通知する最良の方法は何ですか? 私のGUIの部分から、私の特定のサービスを再起動するようウィンドウに指示することは可能ですか?またはスレッド割り込みを送信することはできますか?どうしますか?
回答: 実行中のアカウントに適切な権限が与えられていれば、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` クラスを使用して、ファイルの変更を監視します。これにより、値が変更されたかどうかを確認し、サービスでリセットすることができます。