Как планировать задачи с помощью Quartz.Net внутри службы Windows?
Я создал проект службы Windows в VS и в нем я настраиваю Quartz.Net для немедленного запуска задачи. Код, который регистрирует задачу, выполняется без исключения, но, насколько я могу судить, задача никогда не выполняется.
Я не могу быть уверен, потому что отладка службы Windows сильно отличается. То, как я это делаю, - это программный запуск отладчика из моего кода. Quartz.Net запускает задания в отдельных потоках, но я не уверен, что VS2010 может видеть другие запущенные потоки при отладке службы Windows.
Кто-нибудь сделал то, что я пытаюсь раньше? Любые советы приветствуются.
PS. Я не хочу использовать собственный сервис Quartz.Net.
3 ответа
Одна из наиболее распространенных причин, по которой задание не выполняется, заключается в том, что вам нужно вызвать метод Start() в экземпляре планировщика.
http://quartznet.sourceforge.net/faq.html
Но трудно сказать, в чем проблема, если у нас нет какого-то фрагмента кода, который выполняет создание планировщика и регистрацию работы.
Я вижу, что это немного устарело, но много раз встречалось в разных поисках!
Обязательно ознакомьтесь с этой статьей, в которой при создании планировщика используется конфигурация XML. http://miscellaneousrecipesfordotnet.blogspot.com/2012/09/quick-sample-to-schedule-tasks-using.html
Если вы не хотите использовать XML (динамически создаваемые задачи и т. Д.), Замените процедуру "Выполнить" из статьи выше на что-то вроде этого:
public void Run()
{
// construct a scheduler factory
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
_scheduler = schedulerFactory.GetScheduler();
IJobDetail job = JobBuilder.Create<TaskOne>()
.WithIdentity("TaskOne", "TaskOneGroup")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("TaskOne", "TaskOneGroup")
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(20).RepeatForever())
.Build();
_scheduler.ScheduleJob(job, trigger);
_scheduler.TriggerJob(job.Key);
_scheduler.Start();
}
Примечание - Использование Quartz .NET 2.1.2, .NET 4
Ура!
Я успешно использовал Quart.NET раньше в службе Windows. Когда служба запускается, я создаю фабрику планировщиков, а затем получаю планировщик. Затем я запускаю планировщик, который неявно считывает конфигурационный XML-файл, указанный в App.config службы.
Базовая настройка Quartz.NET: http://quartznet.sourceforge.net/tutorial/lesson_1.html
Вопрос установки App.config: http://groups.google.com/group/quartznet/browse_thread/thread/abbfbc1b65e20d63/b1c55cf5dabd3acd?lnk=gst&q=%3Cquartz%3E