我有一个hangfire 服务器正在运行。我创建了一个后台作业如下
BackgroundJob.Enqueue(() => new MyJob().Execute(path));
该作业应该只运行一次,但在门户网站的处理作业部分,我看到它一次运行多次。我如何防止这种情况并确保该工作只启动一次?
每次您拨打电话时,它都会向数据库添加另一个作业。如果您在 Startup 中发生这种情况并且您的应用程序经常重新启动,那将导致您报告的行为。您可以在方法调用中使用该属性DisableConcurrentExecution
,或者您可以将作业作为定时重复作业输入到数据库中,Hangfire.RecurringJob.AddOrUpdate
而不是BackgroundJob.Enqueue
var options = new BackgroundJobServerOptions { WorkerCount =1 };
app.UseHangfireServer(options);
我希望这能帮到您