Как открыть новое окно из события таймера в WPF

Я пытаюсь показать новое окно, если выполняются определенные условия, которые периодически проверяются с помощью System.Timers.Timer,

Я очень новичок в WPF, но из того, что я прочитал из моего предыдущего вопроса, диспетчеры используют поток пользовательского интерфейса и подходят для компонентов пользовательского интерфейса, тогда как событие System.Timers.Timer запускается в потоке потоков. Ранее я выполнял это с помощью диспетчера, но из-за этого моя программа перестала отвечать при попытке выйти.

Понимая, что сообщение об ошибке: "The calling thread must be STA, because many UI components require this." вероятно, ссылается на тот факт, что я не могу открыть новое окно, используя мой System.Timers.Timer, я попытался сделать следующее:

private void timer1_Tick(object sender, EventArgs e)
{
    //... other timer functions
    if(conditions are met)
    {
          ShowNewWindow();
    }

}
private static void ShowNewWindow()
{
    NewWindow nw = new NewWindow();
    nw.Show();
}

Это приводит к тому же сообщению об ошибке. Нужно ли использовать другой тип таймера?

0 ответов

Другие вопросы по тегам