以下2个代码片段的作用相同吗?
//--------------------------------------------------
1.
//--------------------------------------------------
var producer = Task.Run(async () =>
{
await bar.ReadDataAsync();
});
var consumer = Task.Run(async () =>
{
await bar.WriteDataAsync();
});
await Task.WhenAll(consumer, producer);
//--------------------------------------------------
2.
//--------------------------------------------------
await Task.WhenAll(bar.ReadDataAsync(), bar.WriteDataAsync());
Task.WhenAll
不运行任务。此方法不会启动任何任务。
What Task.WhenAll
does做的是返回一个新的Task
只完成when all原来的任务已经完成。
来自msdn
Task.WhenAll 方法
.NET 框架 4.6 和 4.5
创建一个任务,当所有提供的任务都完成时,该任务将完成
完全的。
https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.whenall%28v=vs.110%29.aspx https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.whenall%28v=vs.110%29.aspx
在您的示例中,您已调用Task.Run
。这是您想要异步运行工作单元的请求。但是,不能保证线程亲和性。两个工作单元可以同步运行 - 这取决于默认情况TaskScheduler
决定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)