是否应该等待背景,即发即弃的任务?

时间:2017-01-23 23:26:14

标签: c# asp.net task background-process

这两种即发即弃的选择有何不同之处:

HostingEnvironment.QueueBackgroundWorkItem(async () => await UpdateStatsAsync(id))

HostingEnvironment.QueueBackgroundWorkItem(() => UpdateStatsAsync(id))

当排队客户并不真正需要依赖的一些后台工作时?

1 个答案:

答案 0 :(得分:0)

在这种情况下,我会使用非异步版本,因为HostingEnvironment.QueueBackgroundWorkItem的重载需要CancellationToken并返回Task,因此您的代码如下所示:

HostingEnvironment.QueueBackgroundWorkItem(ct => UpdateStatsAsync(id));

这个重载await内部的这个功能适合你。这种方法的一个缺点是,如果您从Task范围内返回using,或try / catch,您可能会因未等待{{1}而感到惊讶但是在这个简单的场景中你不必担心这个。