这两种方法都可以用来等待异步方法的完成并获取结果。不同之处在于,AsyncFunction().GetAwaiter().GetResult()是直接调用异步方法并在当前线程上等待其完成,而Task.Run(() => AsyncFunction).GetAwaiter().GetResult()是在另一个线程上运行异步方法并等待其完成。
示例代码如下:
// 使用AsyncFunction().GetAwaiter().GetResult()等待异步方法完成并获取结果 public void Method1() { var result = AsyncFunction().GetAwaiter().GetResult(); Console.WriteLine(result); }
// 使用Task.Run(() => AsyncFunction).GetAwaiter().GetResult()等待异步方法完成并获取结果 public void Method2() { var result = Task.Run(() => AsyncFunction()).GetAwaiter().GetResult(); Console.WriteLine(result); }
private async Task