C#在Main函数中,下面的代码是不能正确编译的:
public static void Main()
{
var ip = await RunAsyncMethod();
}
因为使用await
需要将Main声明为async
,像这样
public static async void Main()
{
var ip = await RunAsyncMethod();
}
然而Main方法不能直接声明为async
,这时我们需要使用一种叫“同步等待”的模式来调用异步方法:
public static void Main()
{
var ip = await RunAsyncMethod().GetAwaiter().GetResult();
}
.GetAwaiter().GetResult()
这是一个同步等待的方式,用于在非异步方法中等待异步方法完成。它会阻塞当前线程,直到异步操作完成。