C# 主线程main函数如何调用 async task<T> await ,以及主线程如何得取返回值?请举例
时间: 2024-09-26 15:01:59 浏览: 45
.NET中的async和await关键字使用及Task异步调用实例
在 C# 中,`async` 和 `await` 是用于编写异步代码的关键特性,它们通常用于处理可能会阻塞的操作,如网络请求、文件读写等。`async` 关键字标记的方法可以返回一个 `Task` 或 `Task<T>` 对象,而 `await` 关键字用于暂停当前任务并等待异步操作完成。
如果你有一个 `async Task<T>` 的方法,你可以像下面这样在主函数 `Main()` 中调用它:
```csharp
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// 调用异步方法,并通过 await 获取结果
string result = await MyAsyncMethodThatReturnsString();
Console.WriteLine("异步方法的结果: " + result);
// 程序会在这里暂停,直到 MyAsyncMethodThatReturnsString() 完成
// 注意:由于 Main 是同步方法,所以这里的代码会在 await 后立即继续
}
// 示例异步方法,返回类型为 Task<string>
static async Task<string> MyAsyncMethodThatReturnsString()
{
// 这里假设这是一个耗时的异步操作,比如网络请求或文件读取
var response = await DoSomeAsyncOperation();
return response; // 返回异步操作的结果
}
// 模拟耗时的异步操作
private static async Task<string> DoSomeAsyncOperation()
{
await Task.Delay(1000); // 模拟延迟1秒
return "返回的数据";
}
}
```
在这个例子中,`Main()` 方法通过 `await` 使得 `MyAsyncMethodThatReturnsString()` 能够在后台运行,不会阻塞主线程。当 `DoSomeAsyncOperation()` 完成后,`result` 变量将包含返回的字符串值。
阅读全文