Кажется, у меня есть проблема с потоком, я думаю, я написал таймер для возврата на главный экран, если он появляется на любом другом экране в течение 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
}));
}
Edit:
Я думаю, что это просто проблема таймера в целом. Просто не могу остановить таймер.