@andrey71
админю и учу C#, ASP.NET Core

Как из DispatcherTimer вывести данные в UI не дожидаясь его завершения?

Добрый всем день! Подскажите пожалуйста, как победить такую проблему:

Приложение WPF, по таймеру, делает запрос к базе, полученными данными заполняет поля(все поля находятся внутри Border) и далее содержимое бордера выводиться на печать. Проблема в том, что данные в UI передаются позже, чем происходит печать. Т.Е. в таймере, печать срабатывает, печатается пустой лист, далее таймер завершает свою работу и данные появляются в UI.

Существуют какие-нибудь решения, "остановить таймер", передать данные в UI, выполнить печать и продолжить его работу?

Куда покопать?
Спасибо!
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@Melz
UI обновляется в отдельном треде через dispatcher. В вашем случае он еше не успел сделать свою работу.
те или делать sleep-delay или как-то так:

this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, (Action)delegate()
  {
     Todo: print
  });


Можно еше повысить приоритет диспатчера, но это так себе идея.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@OwDafuq
Использовать MVVM и все проблемы пропадут сами собой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы