4

我有一个hangfire 服务器正在运行。我创建了一个后台作业如下

  BackgroundJob.Enqueue(() => new MyJob().Execute(path));

该作业应该只运行一次,但在门户网站的处理作业部分,我看到它一次运行多次。我如何防止这种情况并确保该工作只启动一次?

4

2 回答 2

4

每次您拨打电话时,它都会向数据库添加另一个作业。如果您在 Startup 中发生这种情况并且您的应用程序经常重新启动,那将导致您报告的行为。您可以在方法调用中使用该属性DisableConcurrentExecution,或者您可以将作业作为定时重复作业输入到数据库中,Hangfire.RecurringJob.AddOrUpdate而不是BackgroundJob.Enqueue

于 2016-09-26T15:40:32.460 回答
1
   var options = new BackgroundJobServerOptions { WorkerCount =1 };
            app.UseHangfireServer(options);

我希望这能帮到您

于 2016-10-25T01:56:53.993 回答