为什么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告诉我的。我想我明白了。 –