C# Main函数不使用await,但可以调用async task<T> await方法的代码举例?
时间: 2024-09-26 19:14:22 浏览: 48
.NET中的async和await关键字使用及Task异步调用实例
在C#中,`Main`函数通常是同步的,不允许直接使用`await`关键字,因为`Main`函数不允许有异步操作。然而,如果你有一个异步任务作为`Main`函数的一部分,并且你想在`Main`中处理其结果,你可以通过创建一个`Task`并调用它的`GetAwaiter().GetResult()`来间接实现。
例如:
```csharp
using System;
using System.Threading.Tasks;
class Program
{
static async Task<int> LongRunningTask()
{
// 这是一个模拟耗时操作的任务
await Task.Delay(1000);
return 42;
}
static void Main(string[] args)
{
var task = LongRunningTask();
// 使用GetResult()获取异步任务的结果,阻塞主线程直到任务完成
int result = task.GetAwaiter().GetResult();
Console.WriteLine($"The result of the long running task is: {result}");
Console.ReadLine(); // 主线程不会立即退出,等待用户输入
}
}
```
在这个例子中,`LongRunningTask`是异步的,但在`Main`中我们通过`task.GetAwaiter().GetResult()`来强制获取它的结果,这样就相当于同步地处理了异步操作。
阅读全文