2

わかりました、これは初心者の質問です。ネットを検索しても手がかりが見つかりませんでした。ここに私の問題があります。

通常のトリガーとジョブを使用してスケジュールされた例から、IScheduler.ScheduleJob(job, trigger)使用しようとしたJobFactoryを使用しましたが、トリガーの関連するジョブの名前IScheduler.ScheduleJob(trigger)で終了するnull例外はありません

これが私の単純化されたコードです:

仕事

class DummyJob : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        Console.WriteLine("executed");
    }
}

ジョブファクトリー

class JobFactory : IJobFactory
{
    public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
    {
        return new DummyJob();
    }
}

メインプログラム

class Program
{
    static void Main(string[] args)
    {
        ISchedulerFactory sf = new StdSchedulerFactory();
        IScheduler sc = sf.GetScheduler();

        ITrigger trigger = TriggerBuilder.Create()
            .ForJob()
            .StartAt(DateTime.Now.AddSeconds(5))
            .Build();

        sc.JobFactory = new JobFactory();
        sc.ScheduleJob(trigger);
        sc.Start();

        Console.WriteLine("waiting...");
        Console.ReadLine();
        sc.Shutdown();
    }
}

何か案が?

4

1 に答える 1

3

スケジューリングに関しては、独自のJobFactoryを使用しているという理由だけで何か違うことをするべきではないと思います。

メインプログラムは、スケジュールするジョブがわからないため、無効です。

あなたの例はおそらく過度に単純化されており、JobFactoryで何を達成しようとしているのか明確なアイデアを与えていませんが、JobFactoryの目的は実行するジョブを指定することではなく、どのように実行するかを指定することであると指摘する価値があります特定のジョブが開始されることになっているため、bundle.JobDetailには、実行するジョブに関する情報が含まれている必要があります。

于 2012-09-12T11:04:05.517 に答える