【问题标题】:Job execution to call existing controller action method调用现有控制器操作方法的作业执行
【发布时间】:2018-06-02 13:57:18
【问题描述】:

我有两种操作方法DayStart()DayEnd(),我必须调用DayStart() 上午 8:05(周一至周五)和DayEnd() 上午 8:04(周一至周五),这是迄今为止 Quartz.net 中的最佳选择,但我不知道如何调用这两种操作方法在 jobExecution 方法中。

有什么办法可以做到吗?

public ActionResult StartDay()
{
  int userid = Auth.UserID;
  daysServices.StartDay(userid);
  return RedirectToAction("Index", "Home", new { isdayClose = false });
}

public ActionResult CloseDay()
{
  int userid = Auth.UserID;
  int dayId = daysServices.getActiveDay();
  int shiftId = daysServices.getActiveShift();
  daysServices.CLoseDay(dayId, userid, shiftId);           
  return RedirectToAction("TokenDayAmount", "Home", new { isdayClose = true });
}

public async Task Execute(IJobExecutionContext context)
{
  await Console.Out.WriteLineAsync("HelloJob is executing.");
  //I hope something like this? DayStart();
}

【问题讨论】:

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


【解决方案1】:

为此,您需要三个步骤。首先创建一个工作

public class SomeJob : IJob
{
    public void Execute(IJobExecutionContext context)
    {
            DayStart(); //this is your start method
    }
}

其次,您需要一个调度程序来执行您的作业。您可以使用Cron Trigger 来安排您的工作,例如

public class SomeJobScheduler
{
    public static void Start()
    {
        IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
        scheduler.Start();

        IJobDetail job = JobBuilder.Create<SomeJob>().Build();
        ITrigger trigger = TriggerBuilder.Create()
        .WithCronSchedule("0 05 8 ? * MON-FRI *") //This expression to schedule your job Mon-Fri 8.05 AM
        .Build();

        scheduler.ScheduleJob(job, trigger);
    }
}

你可以找到更多关于Cron TtriggerHere

第三次打电话给你的SchedulerGlobal,asax.cs

 void Application_Start(object sender, EventArgs e)
    {
     SomeJobScheduler.Start();
    }

【讨论】:

  • 您的示例适用于版本 2,但 OP 似乎使用的是版本 3。
猜你喜欢
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
相关资源
最近更新 更多