Выполнение задания для вызова существующего метода действия контроллера - PullRequest
0 голосов
/ 02 июня 2018

У меня есть два метода действия 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();
}

1 Ответ

0 голосов
/ 03 июня 2018

Вам нужно три шага для этого.Сначала создайте задание

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 в * 1014.*.

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