这两种即发即弃的选择有何不同之处:
HostingEnvironment.QueueBackgroundWorkItem(async () => await UpdateStatsAsync(id))
和
HostingEnvironment.QueueBackgroundWorkItem(() => UpdateStatsAsync(id))
当排队客户并不真正需要依赖的一些后台工作时?
答案 0 :(得分:0)
在这种情况下,我会使用非异步版本,因为HostingEnvironment.QueueBackgroundWorkItem
的重载需要CancellationToken
并返回Task
,因此您的代码如下所示:
HostingEnvironment.QueueBackgroundWorkItem(ct => UpdateStatsAsync(id));
这个重载await
内部的这个功能适合你。这种方法的一个缺点是,如果您从Task
范围内返回using
,或try
/ catch
,您可能会因未等待{{1}而感到惊讶但是在这个简单的场景中你不必担心这个。