В моем приложении (на Dragonboard 410c) у меня есть ThreadPoolTimer. Внутри Tick-Event много работы, большая часть для обработки данных и обновления пользовательского интерфейса. Поэтому я добавил диспетчера внутри Tick-Event и обработал всю работу там. Поскольку Tick-Event вызывается каждую секунду (это нужно для обновления часов в пользовательском интерфейсе), некоторые анимации пользовательского интерфейса немного запаздывают каждую секунду. Как только я уберу опцию обновления часов в интерфейсе, все анимации будут работать плавно.
private async void clock_Tick(ThreadPoolTimer timer)
{
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
textBlockClock.Text = DateTime.Now.ToString("HH:mm");
textBlockWeekDay.Text = DateTime.Now.ToString("dddd", cultureInfo);
textBlockDate.Text = DateTime.Now.ToString("dd.MM.yyyy");
// Do more work (call multiple methods and tasks)
});
Таким образом, вопрос в том, является ли правильным подход использовать только один диспетчер и добавлять туда каждый связанный код, или я должен использовать диспетчер внутри каждого вызываемого метода / задачи для лучшей оптимизации?