爲什麼B運行同步? Vs說:「因爲這個調用沒有被等待,所以在調用完成之前繼續執行當前的方法。」 ;函數運行同步時VS說它應該運行異步
A) Task.Factory.StartNew(() => Funcation(1, 1)); //Runs Async
B) Funcation(1, 1); // Says it runs async in vs, but really runs sync.
C) var handleOne = Task.Run(() =>
{
Funcation(1, 1);
}); // Runs Async
D) await Task.Factory.StartNew(() => Funcation(1, 1)); //awaits correctly
E) await Funcation(1, 1); //awaits correctly
static private async Task<int> Funcation(int x, int y)
{
Task.Delay(1000).Wait();
}
B仍然是我困惑的時候,我運行它的代碼似乎B,因爲它是,不運行異步。它似乎運行同步,因爲它阻止當前線程向前移動。在B被稱爲直到B完成之後沒有任何運行。對於B,它運行異步還是同步? –
編譯器在函數聲明中告訴你,你的異步方法不會等待任何事情,所以它會同步運行,當你像** B **那樣調用它時,它將同步運行 – dotctor
「在調用之前繼續執行當前方法完成「我認爲這意味着呼叫是異步的,因爲當前的方法將繼續。 K所以我誤解了什麼是vs告訴我的。我想我明白了。 –