我在将 DispatcherTimer 语法转换为 Thread Timer 时遇到问题。当我运行我的应用程序时,它突然关闭,没有任何错误。
基本上我希望计时器每 5 秒执行 2 个方法。
编辑:这两种方法正在更新 UI。 我试图摆脱 DispatcherTimer,因为我在 UI 显示中有很多卡住和延迟。
调度程序计时器代码:
timerW = new DispatcherTimer();
timerW.Tick += new EventHandler(timerW_Tick);
timerW.Interval = new TimeSpan(0, 0, 5000);
timerW.Start();
private void timerW_Tick(object sender, EventArgs e)
{
DisplayWegingInfo();
CaculateTimen();
}
System.Threading 定时器的代码:
public void InitializeDispatcherTimerW()
{
TimerCallback callback = MyTimerCallBack;
timerW = new Timer(callback);
timerW.Change(0, 5000);
}
private void MyTimerCallBack(object state)
{
DisplayWegingInfo();
CaculateTime();
}
谢谢。
最佳答案
问题很可能是您在定时器回调的方法中更新了您的用户界面。这只能在 UI 线程中实现,并且计时器在后台线程中运行。
我建议您坚持使用 DispatcherTimer
。
另一种解决方案是将代码拆分一些:将工作密集型代码提取到其他方法中并在后台线程中运行它们,然后从 UI 线程更新 UI。
像这样:
private void MyTimerCallBack(object state)
{
LongCalculationsThatDontNeedTheUI();
_dispatcherUIThread.Invoke(new Action(UpdateUI));
}
关于c# - 系统线程定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10176680/