私が開発している VSTO アドインでは、特定の遅延でメソッドを実行する必要があります。注意が必要なのは、メソッドの実行に 0.1 秒から 1 秒かかる場合があることです。私は現在、次のSystem.Timers.Timer
ようなものを使用しています:
private Timer tmrRecalc = new Timer();
// tmrRecalc.Interval = 500 milliseconds
private void tmrRecalc_Elapsed(object sender, System.Timers.ElapsedEventArgs e){
// stop the timer, do the task
tmrRecalc.Stop();
Calc.recalcAll();
// restart the timer to repeat after 500 ms
tmrRecalc.Start();
}
これは基本的に開始し、1 つの経過イベントを発生させた後、任意の長さのタスクが実行されるために停止します。しかし、UI スレッドは、各タスクの間に 3 ~ 5 秒間ハングアップするようです。
タイマーには、開始するための「ウォームアップ」時間がありますか? 最初の (そして最後の) 経過に時間がかかるのはそのためですか?
代わりにどのタイプのタイマーを使用しますか?