Я пишу службу Windows, которая когда-то запускается, запускается каждые X часов. Процесс, который он завершает, довольно интенсивный, поэтому я хочу использовать фона рабочего. Я использую файл настроек, чтобы хранить оба часа между прогонами и последний раз, когда служба запускалась.
Я не совсем уверен, что лучший способ сделать это - то есть, я хочу, чтобы служба простаивала, используя как можно меньше ресурсов, и когда она запускается, она должна запускаться в фоновом режиме, сообщать, что она сделала, а затем вернитесь в режим ожидания.
Я думал об использовании 2 фоновых работников. Первый рабочий будет частной локальной переменной для службы, которая запускает что-то вроде этого:
while (true)
{
//create new background worker and run
Thread.Sleep(Settings.Default.SleepTimeHours * 3600000);
}
с субпользователем, который создает каждую итерацию цикла и уничтожается при завершении. Чтобы поддержать отмену, я думаю, что мне придется иметь локальный экземпляр второго рабочего, доступного в службе, но он будет равен нулю, если процесс в настоящее время не запущен. Когда вторичный работник завершает работу, он отправляет мои отчеты, устанавливает последнее время выполнения в файле настроек, а затем удаляет работника и устанавливает ссылку на null.
Мне интересно, есть ли лучший способ сделать это или передовую практику.
Спасибо