当前,在控制台应用程序中,我将执行以下操作以删除文件并忘记样式。
我想知道为每个ConfigureAwait(false)
调用设置Task.Run
是否有任何性能提升?
(我的假设是不,因为我没有等待电话,但不确定)
for(var file in files)
'
'
// Check for certain file condition and decide to delete it.
'
'
if(shouldDeleteFile)
{
Task.Run(() => File.Delete(file));
}
答案 0 :(得分:6)
ConfigureAwait(false)
在这里什么也不做,因为没有await
可以配置。
它是“等待配置”,而不是“配置任务”。
答案 1 :(得分:3)
如果您看一下方法本身的签名,这是不言自明的:
tasks:
- name: with list of items looping
debug:
msg: "{{ item }}"
with_items: "{{ vars[mylist] }}"
参数为public ConfiguredTaskAwaitable ConfigureAwait (bool continueOnCapturedContext);
,它是 continuation ,但是您说自己是在工作中忘却了,而不是continueOnCapturedContext
。结论,因为您没有任何继续。
答案 2 :(得分:2)
简短答案:否,
一种常见的应用程序没有 SynchronizationContext:控制台应用程序。当您的控制台应用程序 调用主方法,SynchronizationContext.Current将返回 空值。这意味着如果您在自己的计算机中调用异步方法 控制台应用程序,除非您执行特殊操作,否则您的异步 方法将不具有线程亲和力:这些方法中的继续 异步方法可能最终在“任何地方”运行。