繁体   English   中英

C#-使用计时器重复方法调用

[英]C# - Repeating a method call using timers

在我正在开发的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秒。

计时器是否有“热身”时间开始? 这就是为什么它的第一次(也是最后一次)经过这么长时间吗?

我应该使用哪种类型的计时器呢?

也许您的计算花费的时间比您想象的要长。 计时器没有任何类型的热身。

有什么原因不能使用后台线程,也许是BackgroundWorker对象而不需要计时器来运行计算吗?

我建议不要在其他线程(生成一个线程)中进行计算,而要使用Thread.Sleep(milliseconds)在间隔之间进行睡眠,而不是使用计时器。 这对我来说非常有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM