Windows サービスで system.timer を使用して、通常はタイマーの間隔を超えるプロセスを実行しています。system.timers の既知の問題である、タイマーが同じコードを複数回起動しないようにしています。
私が欲しいもの:タイマーは私のコードを実行しますが、タイマーは「一時停止」して、コードが完了するまで待ってからティックを再開します。
2 つの問題があります。
system.timers が機能する方法は、タイマーが同じコードの新しい冗長スレッドを起動することによって競合状態を作成し、タイマーの間隔が経過するまでに が完了しない場合にそれらを積み上げるというものです。
これが起こらないようにタイマーを開始/停止しますが、System.Timers.Timer を使用すると、処理が完了するまでタイマーを停止すると、元に戻りません。停止され、破壊され、収集された可能性があります。有効化/無効化は、開始/停止とまったく同じで、同じ結果が得られます。
タイマーの間隔が経過するまでにプロセスが完了していない場合、system.timer が同じコードの新しい冗長スレッドを起動しないようにするにはどうすればよいでしょうか? 明らかに、タイマーの開始/停止 (有効化/無効化) は機能しないため、解決策ではありません。
ヘルプ!