在我的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/