私は、15秒ごとに関数を呼び出す一度のタイマーを持っていますが、最初の5回は機能しますが、作成されていても6回は経過しません。C#System.Threading.Timer再帰的更新
スレッドAがスレッドBがデータの新しい要求を送信している間にスレッドAがデータを処理できる場合は、処理時間が15秒を超えることがあります。スレッドAの処理が終了するまで、スレッドBは開始できません。
const int DATAREFRESH = 15000;
void RequestUpdate()
{
// Some data processing goes here
Console.WriteLine("Update");
// Set the timer
Timer t = new Timer(new TimerCallback(TimeOutCallback), null, DATAREFRESH, Timeout.Infinite);
}
private void TimeOutCallback(object state)
{
RequestUpdate();
}
[出力]ウィンドウでは、「更新」が5回表示され、その後は何も表示されません。それは凍結されていない、私は最後の "更新"の後に終了する〜8スレッドを参照してください。
これを無限に動作させるにはどうすればよいですか?
解決しようとしている問題を説明するタイトルを使用してください。 –
どの 'Timer'クラスを使用していますか? – phoog
なぜ、単一のタイマーインスタンスを作成し、コールバックでそれをリセットしないのですか? – phoog