C# Task.ContinueWith代码示例
时间: 2024-10-13 17:10:54 浏览: 50
c#异步task示例分享(异步操作)
C#中的`Task.ContinueWith()`方法用于继续当前的异步任务,并在原任务完成后执行额外操作。这个方法通常用于处理异步操作的结果、错误处理或执行后续操作。以下是一个简单的示例:
```csharp
using System;
using System.Threading.Tasks;
class Program
{
static async void Main()
{
// 创建一个任务并启动它
var downloadTask = DownloadFileAsync("http://example.com/file.txt");
// 使用ContinueWith创建一个新的任务,当downloadTask完成时执行
var processTask = downloadTask.ContinueWith((previousTask) =>
{
if (previousTask.IsFaulted)
{
Console.WriteLine($"下载失败: {previousTask.Exception.Message}");
}
else if (previousTask.IsCanceled)
{
Console.WriteLine("下载已取消");
}
else
{
Console.WriteLine("下载完成,开始处理文件...");
ProcessFile(previousTask.Result);
}
});
// 等待processTask完成
await processTask;
Console.WriteLine("所有操作已完成");
}
static async Task<string> DownloadFileAsync(string url)
{
// 这里只是一个简化的网络请求模拟
return await Task.Run(() => GetFileFromUrl(url));
}
static string GetFileFromUrl(string url) => "Downloaded file content"; // 假设这是一个下载函数
static void ProcessFile(string fileContent) => Console.WriteLine($"正在处理文件: {fileContent}");
}
```
在这个例子中,`DownloadFileAsync`是一个异步操作,如果它成功,`ProcessFile`将在下载完成后执行;如果有错误,则会在控制台打印错误信息。`ContinueWith`的回调方法接收一个`Task<T>`作为参数,其中T是原任务的结果类型。
阅读全文