Зачем использовать `System.Таймеры.Таймер` может повлиять на производительность в целом?

#c# #.net #wpf

#c# #.net #wpf

Вопрос:

Я использую метод, который вызывается для двух таймеров в качестве их обработчиков прошедших событий, а также этот метод вызывается в конструкторе моего класса. Тело этого метода в основном находится в

 Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
 { ... }));
  

У меня возникли некоторые аномалии. Что лучше использовать вместо таймера?

Комментарии:

1. Возможно, вы могли бы описать эти аномалии и предоставить нам больше информации, например, о том, что происходит в теле делегата и как часто выполняется планирование вашего таймера.

Ответ №1:

Я задал пару вопросов в комментарии к вопросу, но для решения:

У меня возникли некоторые аномалии. Что лучше использовать вместо таймера?

Если вы хотите периодически что-то делать в Dispatcher потоке, используйте DispatcherTimer вместо этого. Тогда вам не нужно возвращаться к потоку пользовательского интерфейса, поскольку таймер уже будет «тикать» в Dispatcher потоке.

Ответ №2:

Это зависит от того, насколько коротким является интервал таймеров и сколько вы делаете в прошедших событиях. Кроме того, поток пользовательского интерфейса изменяется каждый раз, когда истекает один из таймеров.