我已经按照here的说明实现了BackgroundQueue,如下所示:
public ActionResult SomeAction()
{
backgroundQueue.QueueBackgroundWorkItem(async ct =>
{
//Do some work...
}
return Ok();
}
我在Autofac中将BackgroundQueue注册为:
builder.RegisterType<BackgroundQueue>()
.As<IBackgroundQueue>()
.SingleInstance();
到目前为止,一切都很好。我调用控制器动作,并将任务添加到队列中。而且它仍然存在而没有被执行。
所以我如何使任务执行?
您从BackgroundQueue
中获得的the documentation实现只是解决方案的一部分:后台队列将仅跟踪您要执行的作业。
您还需要在文档正下方的位置:QueuedHostedService
。这是一个后台服务,已在DI容器中注册,并在应用程序启动时启动。从那时起,它将监视您的BackgroundQueue
,并在排队时处理工作。