2016-10-30 6 views
1

私は、Quartz .NETスケジューラv2.4.1 を使用している単純なコンソールアプリケーションを持っています。Quartz .NETスケジューラv2.4.1が10回繰り返した後に終了する

私は自分のアプリをビルドするときには10回しか動作しません。

enter image description here

class Program 
{ 
    static void Main(string[] args) 
    { 
     MySchedule.GetValue(); 
    } 
} 

public static class MySchedule 
{ 
    public static void GetValue() 
    { 
     var scheduler = StdSchedulerFactory.GetDefaultScheduler(); 

     scheduler.Start(); 

     var job = JobBuilder.Create<MyJob>().Build(); 

     var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(builder => 

     builder.WithIntervalInSeconds(1) 
     .OnEveryDay() 
     .StartingDailyAt(TimeOfDay.HourMinuteAndSecondOfDay(9, 40, 0))).Build(); 

     scheduler.ScheduleJob(job, trigger); 
    } 
} 

    public class MyJob : IJob 
    { 
     public void Execute(IJobExecutionContext context) 
     { 
      Console.WriteLine($"{DateTime.Now.ToString(new CultureInfo("en"))}"); 
      Console.ReadLine(); 
     } 
    } 

私はTHREADCOUNTを変更するには、configファイルで見ていたが、それは私のために動作しませんでした。

助けがあれば助かります。

ありがとうございます。

答えて

0

プログラムはまったく待ちません。 Mainメソッドが終了します。あなたがプログラムをもっと長く動かしたいのであれば、待ってください。たとえば、Console.ReadLineとなります。その後、ユーザーの操作をジョブから削除できます。また、プログラムの実行中にスケジューラにハンドルを置くこともできますが、ガベージコレクタが最後の参照を削除した場合にどうなるかわかりません。

class Program 
{ 
    static void Main(string[] args) 
    { 
     var scheduler = MySchedule.GetValue(); 

     Console.WriteLine("Scheduler started. Press [Enter] to quit."); 
     Console.ReadLine(); 
    } 
} 

public static class MySchedule 
{ 
    public static IScheduler GetValue() 
    { 
     var scheduler = StdSchedulerFactory.GetDefaultScheduler(); 

     scheduler.Start(); 

     var job = JobBuilder.Create<MyJob>().Build(); 

     var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(builder => 

     builder.WithIntervalInSeconds(1) 
     .OnEveryDay() 
     .StartingDailyAt(TimeOfDay.HourMinuteAndSecondOfDay(9, 40, 0))).Build(); 

     scheduler.ScheduleJob(job, trigger); 

     return scheduler; 
    } 
} 

public class MyJob : IJob 
{ 
    public void Execute(IJobExecutionContext context) 
    { 
     Console.WriteLine(DateTime.Now.ToString(new CultureInfo("en"))); 
    } 
} 
+0

ありがとうございました! – gokhancnr

関連する問題