Windowsサービスの時間の変更を処理する方法

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

質問

私の質問は、私のサービスが寝ていて誰かがデータ収集が行われるべき時間を変更することに決めたら、変更された時間をサービスに通知する最良の方法は何ですか?

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

0

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 クラスを使用して、ファイルの変更を監視します。これにより、値が変更されたかどうかを確認し、サービスでリセットすることができます。

1
追加された