所以我们有一个.NET核心API,它使用hangfire作为任务调度程序。
启动时,我们的API启动以下函数:
public void CreateTasks()
{
/* DATABASE TASKS */
SyncDatabaseTask();
/* SMS TASKS */
SendSmsTask();
}
public void SendSmsTask()
{
var taskId = BackgroundJob.Schedule(() => _smsService.SendSms(), TimeSpan.FromMinutes(30));
BackgroundJob.ContinueWith(taskId, () => SendSmsTask());
}
这将在启动时在Hangfire中创建作业SendSmsTask,并且在第一个作业完成之前不会启动第二个作业。
然而,我们刚刚注意到的问题是,每当我们的API重新启动(例如服务器更新)时,现有的作业仍然在运行,并且正在添加新闻作业。
因此,我们希望在启动时删除所有计划的或正在运行的作业。
我已经看过文件了(
http://docs.hangfire.io/en/latest/
)但没能找到解决这个问题的办法。