在我的WPF应用程序中,我使用3个不同的DispatcherTimers。


一种是显示当前时间
一种是每5秒运行一次数据库查询
第三个每1秒刷新一次自定义按钮的值


当我的程序运行时,会有很多延迟/冻结。
例如,时间开始正确滴答,但是突然之间值冻结,例如冻结后时间增加了+3秒。

我在整个应用程序中都遇到这种情况。
用几个计时器解决此问题的正确方法是什么?

编辑:

我在用System.Timers命名空间中的计时器替换DispatcherTimer时遇到问题。

//new code with timer
timerW = new Timer();
        timerW.Elapsed += new ElapsedEventHandler(timerWegingen_Tick);
        timerW.Interval = 5000;
        timerW.Start();

        //OLD Working Code
        timerW = new DispatcherTimer();
        timerW.Tick += new EventHandler(timerWegingen_Tick);
        timerW.Interval = new TimeSpan(0, 0,5);
        timerW.Start();


错误:“调用线程必须是STA,因为许多UI组件都需要此。”

最好的祝福。

最佳答案

DispatcherTimer在UI线程上执行。因此,如果UI线程的忙碌时间超过了间隔,则将在UI线程空闲时执行。
如果需要更精确的调度,则应该花一些时间而不是在后台运行(System.Threading.Timer,System.Timers.Timer)。但是不要忘了编组。

hth,
马丁

关于c# - WPF Dispatchertimer延迟 react /卡住,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10173300/

10-12 14:54