Кто-нибудь знает, как System.Windows.Forms.Timer влияет на хост-приложение и систему в целом? - PullRequest
1 голос
/ 01 декабря 2008

Кто-нибудь знает, как System.Windows.Forms.Timer влияет на хост-приложение и систему в целом?

Многопоточный фоновый цикл с одной стороны имеет очень высокую загрузку ЦП%, тогда как Timer с очень высокой частотой тиков не показывает никакого эффекта в диспетчере задач Windows.

Не загромождает ли таймер высокой частоты тика цикл сообщений Windows, или?

Ответы [ 2 ]

3 голосов
/ 02 декабря 2008

Определить «таймер высокой частоты тиков»:).

Проблема с компонентами таймера, использующими WM_TIMER (например, Windows.Forms), многообразна:

  • Вы не сможете получить разрешение, превышающее 50 мсек, когда-либо.
  • Если ваша система находится под нагрузкой (например, интенсивное перерисовывание, работа по каналам RDP и т. Д.), Вы можете получать сообщения WM_TIMER один раз каждые 500 мс или более, независимо от того, как низко установлен интервал.
  • Сообщения WM_TIMER являются искусственными сообщениями и могут вообще не доставляться в ваше приложение в течение длительных периодов времени, если ваша очередь сообщений заполняется другими сообщениями.
  • Если ваш метод таймера выполняется дольше, чем один интервал таймера, таймер «пропустит» сообщение, то есть вы не получите другое сообщение WM_TIMER, пока не вернетесь из первого. Другими словами, вы никогда не получите два сообщения WM_TIMER одно за другим по порядку.
1 голос
/ 01 декабря 2008

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

Я считаю, что эта статья о сравнении таймеров от Microsoft также полезна при сравнении этих типов вещей.

Но суть в том, что они не слишком загромождают.

...