C#在Main函數(shù)中,下面的代碼是不能正確編譯的:
public static void Main()
{
var ip = await RunAsyncMethod();
}
因?yàn)槭褂?code>await需要將Main聲明為async,像這樣
public static async void Main()
{
var ip = await RunAsyncMethod();
}
然而Main方法不能直接聲明為async,這時(shí)我們需要使用一種叫“同步等待”的模式來(lái)調(diào)用異步方法:
public static void Main()
{
var ip = await RunAsyncMethod().GetAwaiter().GetResult();
}
.GetAwaiter().GetResult()這是一個(gè)同步等待的方式,用于在非異步方法中等待異步方法完成。它會(huì)阻塞當(dāng)前線程,直到異步操作完成。