Почему в .NET есть 5 версий таймерных классов?
Почему в .Net Framework есть пять классов таймеров, а именно:
System.Timers.Timer
System.Threading.Timer
System.Windows.Forms.Timer
System.Web.UI.Timer
System.Windows.Threading.DispatcherTimer
Почему существует несколько версий класса Timer? И чем они отличаются?
Ответы
Ответ 1
Здесь вы идете:
Сравнение классов таймера в библиотеке классов .NET Framework
https://web.archive.org/web/20150329101415/https://msdn.microsoft.com/en-us/magazine/cc164015.aspx
Содержание
- System.Windows.Forms.Timer
- System.Timers.Timer
- System.Threading.Timer
- Программирование по таймеру с таймерами
- Работа с реестром событий с таймером
- Заключение
Ответ 2
Timers.Timer
генерирует событие после заданного интервала с возможностью генерировать повторяющиеся события. MSDN
Windows.Forms.Timer
- это элемент управления для winforms.
Web.UI.Timer
выполняет асинхронную или синхронную обратную передачу веб-страницы через определенный интервал. MSDN
Threading.Timer
- таймер для обратных вызовов. Создает новую тему для работы. Подается потоками пула потоков. MSDN
Итак, эти таймеры имеют разные цели, и они обслуживаются разными инструментами.
Ответ 3
Вот описание основных таймеров и пунктов, которые я считаю наиболее примечательными.
Winforms.Timer
- галочки в потоке пользовательского интерфейса не гарантируют тикет в определенное время
- тики задерживаются, пока поток пользовательского интерфейса не будет свободен
- будет пропускать тики, если поток пользовательского интерфейса занят
DispatcherTimer
- вызывается в потоке пользовательского интерфейса
- можно установить приоритет для того, какой уровень "холостого хода" требуется для генерации галочки
- будет пропускать галочки
Threading.Timer
- отмечает рабочий поток из пула потоков - нет возможности указать поток
- клещи всегда стреляют вовремя
- ни один из них не пропущен - вы должны остерегаться новых тиков, пока еще обрабатываете старый тик
Timers.Timer
- Обертка вокруг потокового таймера
- отметки на рабочем потоке, взятом из пула потоков CLR
- может заставить галочку на определенном потоке, предоставив SynchronizationObject
- клещи всегда стреляют вовремя
- ни один из них не пропущен
- молча ест исключения