如何在.NET 4.0中创建和管理异步任务?
时间: 2024-09-25 07:05:17 浏览: 5
在.NET 4.0中,创建和管理异步任务通常使用`async`/`await`特性,它大大简化了异步编程流程。以下是一个基本的步骤:
1. **标记方法为异步**:
使用`async`关键字修饰一个方法,表示该方法会返回一个可以等待的结果。例如:
```csharp
public async Task DownloadFile()
{
// 省略实际的下载代码...
}
```
2. **使用`await`处理异步操作**:
在`async`方法内部,调用`await`关键字,其后跟一个`Task`或实现了`IAsyncStateMachine`接口的方法。例如,对于一个网络请求,你会像这样:
```csharp
await HttpClient.GetAsync("https://example.com");
```
这里,`GetAsync`会立即返回,而真正的下载将在后台异步完成。
3. **`await`后的代码是"异步安全"的**:
`await`后,你可以直接编写后续代码,而不是必须将其包装在一个`try-catch`块内,因为`await`会捕获并处理可能出现的异常。
4. **`await`返回的是`Task`对象**:
如果你想要返回给调用者一个异步操作的结果,可以使用`return await someAsyncMethod();`,这样,当`someAsyncMethod`完成时,整个异步操作也完成了。
5. **处理取消请求**:
可以使用`CancellationToken`来处理取消请求,通过`CancellationTokenSource`创建一个`CancellationToken`实例,并传递给需要支持取消的异步方法。
```csharp
var cancellationTokenSource = new CancellationTokenSource();
try
{
await DownloadFile(cancellationTokenSource.Token);
}
catch (OperationCanceledException)
{
Console.WriteLine("Download was canceled.");
}
```