我认为我似乎有一个线程问题,我已经写了一个计时器,如果它在任何其他屏幕上持续5秒,则返回到主屏幕。这个代码在第一次调用ResetScreen()
时工作正常,但在它返回主屏幕后,我无法导航到任何其他屏幕,因为它一直返回到Timer事件处理程序。
我还在没有this.Dispatcher.Invoke
的情况下对此进行了测试,并将其替换为消息框,并且每隔一秒就会弹出一次。
private void ResetScreen()
{
if (!mainScreen)
{
myTimer = new System.Timers.Timer();
myTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
myTimer.Interval = 5000;
myTimer.Start();
}
}
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
myTimer.Stop();
this.Dispatcher.Invoke((Action)(() =>
{
// show main screen
}));
}
编辑: 我认为它只是一个计时器问题。似乎无法阻止计时器。