Дублирование
Это точная копия Работа с более длительным процессом в WCF . Пожалуйста, рассмотрите возможность размещения своего ответа на этот вопрос вместо этого.
Оригинальный вопрос
Я реализую бизнес-уровень приложения, которое должно запускать некоторые фоновые процессы в запланированное время. Бизнес-уровень состоит из нескольких служб WCF, работающих в одном веб-приложении.
Идея заключается в определении набора «задач», которые должны выполняться в разное время (например, каждые 5 минут, каждый день в 23:00 и т. Д.). Это не сложно реализовать в качестве службы Windows, но проблема в том, что задачам необходим доступ к кэшам данных, которые находятся в службах, поэтому этот «планировщик» должен работать в контексте IIS для доступа к этим данным.
В настоящее время я использую пользовательский ServiceHostFactory в одном из сервисов WCF, который порождает дочерний поток и возвращает. Дочерний поток спит и просыпается каждые X минут, чтобы увидеть, есть ли запланированные задачи и выполняет их.
Но я беспокоюсь о том, что IIS случайно убивает мой поток, когда он перезагружает пул приложений или после некоторого неактивного времени (например, нет активности ни в одной из служб WCF, которые прослушивают запросы от уровня представления). Поток должен работать непрерывно независимо от активности в службах. Это действительно возможно?
Я нашел статью того, кто делает то же самое , но его решение, по-видимому, заключается в регулярной проверке сервера на самом дочернем потоке. Надеюсь, есть лучшее решение.