Quartz.net 将任务安排到 运行 5 分钟
Quartz.net schedule a task to run for 5 minutes
我的要求是构建一个 Quartz.net 任务:
- 在指定时间运行可变的分钟数然后结束?
我有这个class:
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();
}
}
如果您只是想运行完成某些事情,似乎让对象自行停止是正确的方法(即自己调用停止)。
如果你想让 Quartz 调用停止,你可以这样做:
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
为您要等待的分钟数的变量。
我的要求是构建一个 Quartz.net 任务:
- 在指定时间运行可变的分钟数然后结束?
我有这个class:
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();
}
}
如果您只是想运行完成某些事情,似乎让对象自行停止是正确的方法(即自己调用停止)。
如果你想让 Quartz 调用停止,你可以这样做:
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
为您要等待的分钟数的变量。