2016-12-18 4 views
0

プッシュ通知を24時間間隔で毎日送信するには、私はquartzライブラリを使用しました。しかし、問題は私のPCがオフになっている、または私のネットワークが切断されている、このコードの平和も引き起こされますが、私のプッシュ通知は送信されません。私の質問は、私のPCがオフになっている、またはネットワークが切断されたときに、どのようにトリガーを管理できますか? 私のPCがオンになっているか、インターネットに接続した後にプッシュ通知を送信したい。あなたがMisfire Instructionsの組み合わせを必要とするプッシュ通知の送信中にコンピュータがオフになっているときのクォーツトリガーの処理

ITrigger trigger = TriggerBuilder.Create() 
       .WithDailyTimeIntervalSchedule 
        (s => 
        s.WithIntervalInHours(24) 
        .OnEveryDay() 
        .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(11, 00)) 
       ) 
       .Build(); 

scheduler.ScheduleJob(job, trigger); 
+0

はまた、あなたのPCをオンまたはインターネットに接続されている場合、スケジュールでトリガーされる方法を実行します。 – VDWWD

+0

申し訳ありませんが、24時間後に起動される私の仕事方法を見たいですか? –

+0

いいえ、ただし、アプリケーションが起動するか、インターネット接続が復元されるたびに、そのメソッドを起動する必要があります。 – VDWWD

答えて

1

、あなたの仕事上のDisallowConcurrentExecutionAttributeを設定JobExecutionExceptionDisallowConcurrentExecutionAttribute

  1. 、これはあなたの仕事は、同時に複数回実行することを防ぐことができます。あなたのトリガーにMisfire Instructionを設定

    [DisallowConcurrentExecution] 
    public class MyJob : IJob 
    { 
    .... 
    } 
    
  2. 、これは、それが実行を逃した場合には、すぐに火にあなたのトリガーを教えてくれます。

    ITrigger trigger = TriggerBuilder.Create() 
         .WithDailyTimeIntervalSchedule 
          (s => 
          s.WithIntervalInHours(24) 
          .OnEveryDay() 
          .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(11, 00)) 
          .WithMisfireHandlingInstructionFireAndProceed() 
         ) 
         .Build(); 
    
  3. ジョブの実行中に例外をキャッチします。インターネットにアクセスできない場合。その後、JobExecutionExceptionを投げ、Quartzにトリガを再度発射するよう伝えます。

    public class MyJob : IJob 
    { 
        public void Execute(IJobExecutionContext context) 
        { 
         try 
         { 
          // connect to internet or whatever..... 
         } 
         catch(Exception) 
         { 
          throw new JobExecutionException(true); 
         } 
        } 
    } 
    
  4. 次回は、documentation最初に読ん;)

関連する問題