我对c#async/await机制有一些误解。 有什么时候多重等待有意义?
private async void Init()
{
await Task.Run(() => Do1());
await Task.Run(() => Do2());
}
和
private async void Init()
{
await Task.Run(() =>
{
Do1();
Do2();
});
}
我看到的唯一的区别之间的本质区别:第一个样品在D01和D02会在不同的线程来运行,而第二个样品中 - 在同一线。但是,再次,它的真正好处是什么,当我更喜欢第一种方法而不是第二种方法时,反之亦然?
编辑:第二种情况
是什么
private async void Init()
{
await Task.Run(() => Do1());
Do3();
}
和
private async void Init()
{
await Task.Run(() =>
{
Do1();
Do3();
});
}
在你的具体情况下,第二种方法更好。因为Do1之后的任何方式,Do2将被执行,所以结果没有区别。 task.run在第一种方法中增加了一些开销。还要注意的是,在两种情况下,Do1都会先运行,然后在第一种情况下Do2启动 –
@ M.kazemAkhgary,当任务正在启动时,它们是否会一个接一个地运行,然后我们马上等待?即,如果它们被分配给变量并在等待第一个变量之前启动它们,它们是否会同时运行? – Dhunt
是的。如果您将它们存储在变量中,然后等待它们单独运行,但现在因为在创建任务之后等待它们开始一个接一个@Dhunt –