Как планировать задачи с помощью 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

Другие вопросы по тегам