Знакомство с серверными таймерами
Обновлен: Ноябрь 2007
С помощью серверных таймеров можно задать постоянный интервал времени, через который в приложении будет выполняться генерация событий. После генерации это событие можно обработать. Предположим, например, что имеется существенно важный сервер, который должен функционировать 24 часа в сутки и семь дней в неделю. Чтобы гарантировать работу системы, можно создать службу, использующую таймер для периодической проверки указанного сервера. Если система не отвечает, то служба может попытаться выполнить повторный запуск сервера или уведомить об этом администратора.
Примечание. |
---|
Для серверных таймеров промежуток времени задается в миллисекундах. |
Серверные таймеры, таймеры Windows и таймеры потоков
В Visual Studio и .NET Framework существует три вида элементов управления Timer.
Серверный таймер, который можно добавить на панель элементов
Таймер Windows, всегда расположенный в панели элементов
Таймер потока, доступный программным путем.
Таймер Windows оптимизирован для использования в приложениях Windows Forms. Серверный таймер представляет собой обновление обычного таймера, оптимизированное для работы в среде сервера. Таймер потока представляет собой упрощенный таймер, использующий вместо событий методы обратного вызова и обслуживаемый находящимися в группе потоками.
В архитектуре Win32 существует два типа потоков — потоки пользовательского интерфейса и рабочие потоки. Потоки пользовательского интерфейса большую часть времени не выполняют какой-либо работы, а ожидают поступления сообщений в соответствующих циклах их обработки. Сразу после поступления сообщения они обрабатывают его, а затем ожидают поступления следующего сообщения. Рабочие потоки, с другой стороны, предназначены для выполнения фоновых задач и не используют циклы обработки сообщений. При работе как таймера Windows, так и серверного таймера используется свойство Interval. Интервал потокового таймера задается в конструкторе Timer. Таймеры предназначены для различных целей, о чем свидетельствует обработка ими потоков.
Таймер Windows разработан для использования в однопоточной среде, в которой обработка выполняется потоками пользовательского интерфейса. Точность таймеров Windows ограничена 55 миллисекундами. При использовании таких традиционных таймеров необходимо, чтобы в пользовательском коде присутствовал и был доступен приемник сообщений, работающий с тем же самым потоком; или же осуществлялось маршалирование вызова в другой поток. Для компонентов COM это приводит к падению производительности.
Серверный таймер разработан для использования с рабочими потоками в многопоточной среде. Поскольку в серверных таймерах используется другая архитектура, они потенциально более точны, чем таймеры Windows. Серверные таймеры могут перемещаться между потоками для обработки возникших событий.
Таймером потока можно воспользоваться в случае, когда сообщения не поступают в поток. Например, таймер Windows поддерживается операционной системой, поэтому если в поток не поступают сообщения, то связанное с таймером событие никогда не произойдет. В этом случае более полезным будет таймер потока.
Таймер Windows находится в пространстве имен System.Windows.Forms, серверный таймер — в пространстве имен System.Timers, а таймер потоков — в пространстве имен System.Threading.
См. также
Задачи
Практическое руководство. Создание экземпляров серверных таймеров
Практическое руководство. Наблюдение за серверными таймерами
Основные понятия
Программная архитектура таймера