System.Threading.Timer (コールバックがある) が確実に起動しません。これは、テキスト ボックスからタイマーの実行時間を入力するプログラミングの割り当ての一部です。
タイマーは次のように宣言されます。
System.Threading.Timer timer = new System.Threading.Timer(WorkerObject.callback, null, delay, Timeout.Infinite);
また、遅延はint
、コールバックが最初に起動するまでの遅延を表すだけです (1 回だけ起動することになっています)。
コールバック メソッドは次のようになります。
public static void callback(Object stateinfo)
{
stop = true;
}
そして、ループを停止するフラグを true に設定するだけです (ループは ThreadPool 上のスレッドによって実行され、実際にはスレッドを停止します)。
ループは次のようになります。
while (!stop)
{
currentTextbox.Invoke(new Action(delegate()
{
currentTextbox.AppendText((counter++) + Environment.NewLine);
currentTextbox.Update();
}));
}
私の問題は、stop
変数が 5000 ミリ秒を超える遅延に対して常に false であることです。コールバックを常に起動するように「強制」する方法はありますか?