2016-01-12 98 views
0

我requeriment是要建立一个Quartz.net任务运行:Quartz.net计划任务5分钟

  • 运行在特定的时间的分钟变量,然后完成?

我有这个类:

public class Proccess 
    { 
     public static void Start() 
     { 
      Console.WriteLine("I'm starting"); 
     } 

     public static void End() 
     { 
      Console.WriteLine("I'm finishing"); 
     } 
    } 

有什么办法与Quartz.Net)配置作业调用的Process.Start(等待X分钟和呼叫Process.End()?

也许有些事情也是这样吗?

public class TapWaterJob : IJob 
{ 
    public TapWaterJob() 
    { 
     // quartz requires a public empty constructor so that the 
     // scheduler can instantiate the class whenever it needs. 
    } 

    public void Execute(IJobExecutionContext context) 
    { 
     Proccess.Start(); 
     System.Threading.Thread.Sleep(10000); 
     Process.End(); 
    } 
} 
+0

“运行在指定时间的分钟变量,然后 完成” 不清楚多久应该被触发 – Valentin

+0

这将只运行一次 – Marc

+0

[配置Quartz.Net的可能的复制,从执行停止作业,如果超过规定的时间跨度要长(http://stackoverflow.com/questions/24446215/configuring-quartz-net-to-stop-a-job-from-executing-if-it-is-taking-longer - ) – Najera

回答

0

如果你只是想运行某些东西来完成,似乎只是让对象停止它自己是正确的方式来做到这一点(即本身的呼叫停止)。

如果你想石英调用停止,你可以做这样的事情:

var jobMap = new JobDataMap(); 
jobMap.Put("process", process); 

var startJob = JobBuilder.Create<StartJob>() 
    .WithIdentity("startJob") 
    .SetJobData(jobMap).Build(); 
ITrigger startTrigger = TriggerBuilder.Create() 
    .WithIdentity("startTrigger") 
    .StartNow() 
    .Build(); 
var stopJob = JobBuilder.Create<StopJob>() 
    .WithIdentity("stopJob") 
    .SetJobData(jobMap).Build(); 
ITrigger stopTrigger = TriggerBuilder.Create() 
    .WithIdentity("stopTrigger") 
    .StartAt(DateTime.Now.AddMinutes(5)) 
    .Build(); 

var sched = StdSchedulerFactory.GetDefaultScheduler(); 
sched.Start(); 
sched.ScheduleJob(startJob, startTrigger); 
sched.ScheduleJob(stopJob, stopTrigger); 

与要等待的分钟数的变量替换5参数StartAt

+0

这就是我实现这个requeriment,谢谢! – Marc