c# - 调用现有控制器操作方法的作业执行
问题描述
我有两种操作方法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();
}
解决方案
为此,您需要三个步骤。首先创建一个工作
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 Ttrigger
这里
第三次打电话给你Scheduler
。Global,asax.cs
void Application_Start(object sender, EventArgs e)
{
SomeJobScheduler.Start();
}
推荐阅读
- reactjs - React Native 5 向标题元素类型添加按钮无效
- c++ - 尝试链接到我使用 LD_PRELOAD 创建的共享库时出错
- python - 部分应用/和/或/柯里化的装饰器:如何确定是否提供了强制参数?
- html - UIPrintPageRenderer 破坏不同页面上的内容并跳过部分页面
- swift - 警告说当我尝试打开一个不允许的 URL 时它被阻止
- node.js - Cpanel 中的 Node.js(Express)Restful API 应用程序不起作用(API)?得到 503 服务不可用
- arrays - 除了不变性之外,字符串与 char 数组相比的优势
- c# - 传递 IOptions
启动配置中的方法 - javascript - 如何更改 Vuetify v-autocomplete 菜单边框半径样式?
- python - Matplotlib 用圆圈孵化:如何抑制“截断”圆圈的显示?