2

Quartz.Net2.0を使い始めようとしています。非常に単純な外観のテストアプリケーションが失敗していますSchedulerException

トリガーに関連するジョブの名前をnullにすることはできません

コードは、バージョン2.0移行ガイドから採用されています

ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler classSched = schedFact.GetScheduler();
classSched.Start();
IJobDetail job = JobBuilder.Create<ClassificationJob>()
                    .WithIdentity("myJob", "My Group")
                    .WithDescription("My Description")
                    .Build();

TimeZoneInfo tzUtc = TimeZoneInfo.Utc;
DateTime startTime;

startTime = DateTime.UtcNow;

ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "My Group")
    .WithDescription("My Description")
    .StartAt(startTime)
    .WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever())
    .Build();

classSched.ScheduleJob(trigger); // Exception on this line

なぜこれが失敗するのですか?

4

1 に答える 1

6

2つの問題があると思います。

まず、(移行ガイドの例にも関わらず)、トリガーがどのジョブに関連しているかを言う必要があると思います。たとえば、.ForJobメソッドを呼び出します。

ITrigger trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "My Group")
    .WithDescription("My Description")
    .StartAt(startTime)
    .WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever())
    .ForJob(job)
    .Build();

次に、ジョブのスケジュールに使用している構文は、ジョブが以前に追加されている場合にのみ機能します(たとえば、以前にclassSched.AddJob(job、true); //またはclassSched.AddJob(job、false);を呼び出した場合。

それがまだ行われていない場合は、構文を使用する必要があります

  classSched.ScheduleJob(job, trigger); 
于 2013-03-26T11:39:04.580 に答える