C# Task任务执行结束时触发的试件
时间: 2024-10-12 11:09:02 浏览: 25
C# Task任务操作代码
3星 · 编辑精心推荐
在C# 中,Task 是用于异步编程的重要组件,当你创建并启动一个 Task 时,你可以设置一个回调委托或注册一个完成事件来处理任务执行完毕的情况。当Task完成后,无论成功还是失败,都会执行相应的完成处理。
1. **注册完成事件**:
使用 `ContinueWith` 方法可以注册一个Action或Func作为任务完成后的处理,这个处理会在主线程或指定线程上运行。例如:
```csharp
Task task = ...;
task.ContinueWith(taskResult =>
{
if (taskResult.IsCompletedSuccessfully)
Console.WriteLine("Task completed successfully.");
else
Console.WriteLine("Task failed with error: " + taskResult.Exception.Message);
});
```
2. **使用lambda表达式作为完成处理**:
也可以使用Lambda表达式简化这一过程:
```csharp
Task.Run(() => PerformHeavyWork()).ContinueWith((t, s) =>
{
if (t.IsSuccess)
Console.WriteLine("Work done");
else
Console.WriteLine($"Error: {t.Error.Message}");
});
```
3. **TaskCompletionSource**:
如果你需要更复杂的控制流程,还可以使用 `TaskCompletionSource<T>` 来手动触发任务完成或错误,这允许你在外部控制何时完成任务。
当你关心任务结果并希望在完成后做某事时,以上方法非常有用。注意,异步编程的核心思想是避免阻塞UI线程,所以通常在非关键路径的操作完成后执行处理代码。
阅读全文