私は基本的にメールボックスにアクセスして電子メールを読むWindowsサービスを持っています。私はx秒ごとにメールボックスをチェックする最善の方法を見つけようとしています。x秒ごとにWindowsサービスを呼び出す/起動する最も良い方法は何ですか?
1つの方法は、単にThread.Sleepを呼び出し、次にStartメソッドを再度呼び出すことです。
protected override void OnStart(string[] args)
{
// get config settings
CheckMailbox();
}
public void CheckMailbox()
{
int x = 5000;
// do stuff
Thread.Sleep(x);
CheckMailbox();
}
これが最善の方法かどうかはわかりません。さらにこれを調べるには、WCF経由でサービスを公開してWindowsサービスを呼び出すことができると私は理解します。この場合、WebアプリケーションがProcessというプロセスを呼び出して開始すると、矛盾するスレッドが存在するでしょうか?どうすればそれに対処できますか?毎回新しいスレッドを作成してキューに入れる必要がありますか?
+1 - 良い点!寝ている間、サービスはイベントを停止するために反応しません、それは本当です。 –
スレッディングタイマーでは、10秒ごとにメールボックスをチェックし、開かれて処理するのに10秒以上かかると、これは一度に複数のスレッドを実行するのは正しいでしょうか? – mickyjtwin
+1タイマーは便利です! @mickyjtwin:System.Timers.Timerを使用する場合はStartメソッドとStopメソッドがあるので、Stopを呼び出してメールを処理してからStartを呼び出すことができます。そうすれば、次回の確認までメールの処理が完了してからx秒待つことになります。しかし、私があなたが提案する場合には、並列スレッドを取得するとは思わない。ティックは新しいスレッドではなくタイマーが作成されたスレッドで呼び出されるべきです。 –