当Window应用程序挂起时,DispatcherTimer停止

时间:2012-12-10 14:45:13

标签: c# .net wpf multithreading

我已经写了这个函数来更新每一秒的计时器时间。

DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = TimeSpan.FromSeconds(1.0);

private void dispatcherTimer_Tick(object sender, EventArgs e)
{
            ApplicationVariables.ServerDateTime = CurrentDT = CurrentDT.AddSeconds(1);     
}

但是如果我的应用程序挂了一段时间,那么应用程序计时器会在此时停止,并且在响应应用程序计时器启动并从上次启动后,而不是在上次添加应用程序挂起时间以显示实际时间。如果应用程序挂起,请建议我如何保持计时器开启。

我正在使用BackgroundWorker对象来维护应用程序挂起状态。

当我的应用程序试图初始化fujitsu读者的对象时,它通常会挂起。

请查看附件以了解更多详情。

enter image description here

1 个答案:

答案 0 :(得分:0)

我建议使用非调度程序计时器来执行您的任务,并在必要时通过调用来更新UI。

public System.Threading.Timer MyTimer { get; set; }

this.MyTimer = new System.Threading.Timer(new TimerCallback(MyTimer_CallBack), null, 1000, 1000);

void MyTimer_CallBack(object State)
{
this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (System.Threading.ThreadStart)delegate()
{
  ApplicationVariables.ServerDateTime = CurrentDT = CurrentDT.AddSeconds(1); 
});
}