Добавление System.Threading.Timer в службу Windows в VS 2010 - PullRequest
5 голосов
/ 23 июня 2011

Я впервые работаю со службой Windows и учусь по ходу дела.Я использую VS 2010, Windows 7 для создания службы Windows, которая будет иметь таймер.Я также гуглил и просматривал этот сайт Использование таймера в службе Windows , Лучший таймер для использования в службе Windows , но я все еще не понимаю, куда кодировать таймер вкомпонент службы Windows

У меня есть метод OnStart и метод OnStop в классе service1.cs
Где бы я кодировал таймер для выполнения функции (НЕ запускать службу Windows)?

Ответы [ 2 ]

6 голосов
/ 23 июня 2011

Ниже приведен пример того, как это сделать.Он записывает сообщение в журнал приложений (как видно в окне просмотра событий) каждые 10 секунд, пока служба не будет остановлена.В вашем случае поместите вашу периодическую логику в метод OnElapsedEvent ().

private System.Timers.Timer _timer = new System.Timers.Timer();

protected override void OnStart(string[] args)
{
    _timer.AutoReset = true;
    _timer.Interval  = 10000;  // 10 seconds
    _timer.Elapsed  += OnElapsedEvent;
    _timer.Start();
}

protected override void OnStop()
{
    _timer.Stop();
}

private void OnElapsedEvent(object sender, ElapsedEventArgs e)
{
    // Write an entry to the Application log in the Event Viewer.
    EventLog.WriteEntry("The service timer's Elapsed event was triggered.");
}

У меня есть пара подробных ответов здесь, в SO, которые могут помочь вам, когда вы начнете работать со службами Windows.1004 *

4 голосов
/ 23 июня 2011

Было бы проще использовать запланированное задание для запуска небольшого консольного приложения или аналогичного, вместо того, чтобы иметь дело с различными нюансами, которые может принести служба Windows?

Если нет, вам может потребоваться просмотреть обычную статью о написании служб Windows, такую ​​как эта статья c # или эта статья VB .Как только вы увидите, как работает нормальный сервис (сервис, который не использует таймер), вы должны знать, куда добавить код таймера.

Надеюсь, это поможет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...