首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Quartz.Net中设立的时间触发比需要的时间长,引起的重复触发

2013-12-26 
Quartz.Net中设置的时间触发比需要的时间长,引起的重复触发。我现在用的是2.0.1版本 我有一个任务 有可能需

Quartz.Net中设置的时间触发比需要的时间长,引起的重复触发。
我现在用的是2.0.1版本 我有一个任务 有可能需要1-X秒(X秒代表这个时间是不确定的 有可能要1秒 也有可能100秒 甚至更长时间)才能处理完,,但是我设置的触发是3秒  怎么能保证我是做完了第一次 然后等待3秒再执行呢??
我目前的设置定时的代码如下:、

  public void Start(object sender, EventArgs e)
        {
            try
            {
                // 在应用程序启动时运行的代码                                                                                
                ISchedulerFactory sf = new StdSchedulerFactory();
                IScheduler sched = sf.GetScheduler();
                //新建一个计划任务                                                                                           
                IJobDetail job = JobBuilder.Create<Test01>()
                    .WithIdentity("job1", "group1").Build();

                //该任务执行时间为每隔10秒中,如果要每隔5分钟可以这样0 0/5 * * * * ?                                        
                //这样的格式表示每隔5分钟整执行                                                                             
                ITrigger trigger = TriggerBuilder.Create()
                    .WithIdentity("trigger1", "group1")
                    .WithSchedule(CronScheduleBuilder.CronSchedule(new CronExpression("0/1 * * * * ?")))
                    .Build();
                //启动任务                                                                                                  
                sched.ScheduleJob(job, trigger);
                sched.Start();
                //trigger.
               // sched.

                // sched.Shutdown(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
          
        }


[解决办法]
Quartz.Net 的回调接口可以试试。

不过比较简单的就是声明一个Boolean值来表示上一个任务完成与否。

Quartz.Net每3秒调用一次,如果上一个没有完成就直接退出。

这样差不多就是上一个任务完成后3秒执行新任务了
[解决办法]
给你的Job类加上[DisallowConcurrentExecution]标记

热点排行