該程序不會按正確的順序打印輸出。異步和等待C#和問題
public static void Main(string[] args)
{
new Program().Start();
}
public async void Start()
{
int num1 = await GetNumber();
int num2 = await GetNumber();
int num3 = await GetNumber();
Console.WriteLine("Wait...");
Console.ReadKey();
}
public static async Task<int> GetNumber()
{
System.Threading.Thread.Sleep(4000);
Console.WriteLine("Hello");
return 0;
}
它輸出:
--------wait 4Seconds
--------print Hello
--------wait 4Seconds
--------print Hello
--------wait 4Seconds
--------print Hello
--------print wait....
它應該輸出
--------print wait....
--------wait 4Seconds
--------print Hello
--------print Hello
--------print Hello
你在GetNumber之前使用await關鍵字,我認爲它會等待操作,並且在前一個沒有完成的時候沒有移動光標到下一個命令。 –