【发布时间】:2021-07-23 21:21:00
【问题描述】:
我有一个hangfire 服务器正在运行。 我创建了一个后台作业如下
BackgroundJob.Enqueue(() => new MyJob().Execute(path));
该作业应该只运行一次,但在门户网站的处理作业部分,我看到它一次运行多次。如何防止这种情况并确保该作业只启动一次?
【问题讨论】:
-
您是否在 BackgroundJob.Enqueue 上设置了断点以查看它是否被多次调用?那行代码在哪里?
-
这是正确的语法,可以触发并忘记调用。那应该运行一次。 Execute 方法是做什么的?
-
我在 Azure 网站上运行它。代码在启动时只运行一次。如果应用程序池似乎经常发生回收,那么它可能会增加另一项工作。有没有办法检查作业是否已经入队或正在运行,以防止进一步入队?