如何在发送推送通知期间关闭计算机时处理Quartz触发器

时间:2016-12-18 04:53:32

标签: c# asp.net push-notification quartz-scheduler quartz.net

每天24小时发送推送通知,我使用石英库。但问题是当我的电脑关闭或我的网络断开连接时,这个代码的安静也被触发但我的推送通知没有发送。我的问题是,当我的电脑关闭或网络断开时,我如何管理触发器? 我想在打开电脑或连接到互联网后发送推送通知。

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

 scheduler.ScheduleJob(job, trigger);

1 个答案:

答案 0 :(得分:1)

您需要Misfire InstructionsJobExecutionExceptionDisallowConcurrentExecutionAttribute

的组合
  1. 在作业上设置[DisallowConcurrentExecution] public class MyJob : IJob { .... } ,这样可以防止您的作业同时执行多次。

    Misfire Instruction
  2. ITrigger trigger = TriggerBuilder.Create() .WithDailyTimeIntervalSchedule (s => s.WithIntervalInHours(24) .OnEveryDay() .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(11, 00)) .WithMisfireHandlingInstructionFireAndProceed() ) .Build(); 设置为您的触发器,这将告诉您的触发器在错过执行时立即触发。

    JobExecutionException
  3. 在执行作业期间捕获任何异常,例如当互联网无法访问时。然后扔一个public class MyJob : IJob { public void Execute(IJobExecutionContext context) { try { // connect to internet or whatever..... } catch(Exception) { throw new JobExecutionException(true); } } } 并告诉Quartz它应该再次触发触发器。

    {{1}}
  4. 下次首先阅读documentation;