我對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 –