using Quartz;
using System;
using System.Diagnostics;
using System.Threading.Tasks;
namespace New_College.Tasks
{
public class JobBase
{
///
/// 执行指定任务
///
///
///
public async Task ExecuteJob(IJobExecutionContext context, Func func)
{
string jobHistory = $"【{DateTime.Now}】执行任务【Id:{context.JobDetail.Key.Name},组别:{context.JobDetail.Key.Group}】";
try
{
var s = context.Trigger.Key.Name;
//记录Job时间
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
await func();//执行任务
stopwatch.Stop();
jobHistory += $",【执行成功】,完成时间:{stopwatch.Elapsed.TotalMilliseconds.ToString("00")}毫秒";
//SerilogServer.WriteLog(context.Trigger.Key.Name.Replace("-", ""), $"{context.Trigger.Key.Name}定时任务运行一切OK", "任务结束");
}
catch (Exception ex)
{
JobExecutionException e2 = new JobExecutionException(ex);
//true 是立即重新执行任务
e2.RefireImmediately = true;
//SerilogServer.WriteErrorLog(context.Trigger.Key.Name.Replace("-", ""), $"{context.Trigger.Key.Name}任务运行异常", ex);
jobHistory += $",【执行失败】,异常日志:{ex.Message}";
}
Console.Out.WriteLine(jobHistory);
return jobHistory;
}
}
}