在我正在开发的 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 个 elapse 事件,之后它停止执行任意长度的任务。但是UI线程似乎在每个任务之间挂了3-5秒。
计时器是否有启动的“热身”时间?这就是为什么它的第一次(也是最后一次)过去需要这么长时间吗?
我改用哪种类型的计时器?