我正在使用由IIS托管的HangFire,其应用池设置为“AlwaysRunning”。我正在使用Autofac扩展来进行DI。目前,当使用HangFire运行后台作业时,它们将按顺序执行。这两项工作性质相似,涉及文件I / O.第一个作业执行并开始生成必需的文件。第二个作业执行并开始执行。然后它将停止执行,直到第一个作业完成,此时第二个作业将恢复。我不确定这是否与DI和寿命范围有关。我倾向于认为不是因为每个依赖范围都使用实例创建所有内容。我正在使用owin来引导hangfire并且我没有传递任何BackgroundServer选项,也没有通过属性应用任何提示。什么会导致作业顺序执行?我正在使用worker的默认配置。我正在向web api发送一个帖子请求,并使用以下BackgroundJob.Enqueue<ExecutionWrapperContext>(c => c.ExecuteJob(job.SearchId, $"{request.User} : {request.SearchName}"));
提前致谢
答案 0 :(得分:0)
我最近正在寻找这种确切的行为,我设法通过使用此属性来实现..
double sum = 0;
foreach(TabPage tbp in tabControl1.TabPages)
{
foreach(System.Windows.Forms.Control c in tbp.Controls)
{
if (c.ToString() == "TextBox")
{
sum += Convert.ToDouble(c.Text);
}
}
}
您可能在作业中或全局应用此属性吗?
答案 1 :(得分:0)
这是你在找什么?
var hangfireJobId = BackgroundJob.Enqueue<ExecutionWrapperContext>(x => x.ExecuteJob1(arguments));
hangfireJobId = BackgroundJob.ContinueWith<ExecutionWrapperContext>(hangfireJobId, x => x.ExecuteJob2(arguments));
这基本上会执行第一部分,当它完成时,它将启动第二部分