该程序不会按正确的顺序打印输出。异步和等待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关键字,我认为它会等待操作,并且在前一个没有完成的时候没有移动光标到下一个命令。 –