c# 使用多线程 Task
时间: 2024-09-28 22:13:04 浏览: 34
c# Task 多线程管理 v1
5星 · 资源好评率100%
在C#中,`Task` 和 `Thread` 是两个常用的并发编程工具,它们可以帮助你在程序中创建和管理多个线程。`Task` 比 `Thread` 更加推荐,因为它提供了更高级别的并发管理和异步编程功能。
使用 `Task` 的步骤大致如下:
1. **创建任务**:你可以通过 `Task.Factory.StartNew` 或者 LINQ 非阻塞语法 `await Task.Run()` 来创建新任务,并指定要执行的操作。
```csharp
Task<int> longRunningOperation = Task.Run(() => DoLongRunningComputation());
```
2. **异步等待**:如果你想让代码在任务完成后继续执行,可以使用 `await` 关键字,这会自动释放当前线程直到任务完成。
```csharp
int result = await longRunningOperation;
```
3. **任务链和并行**:`Task` 支持任务链接和并行执行,例如使用 `ContinueWith` 或 `WhenAll`/`WhenAny` 方法。
4. **错误处理**:`Task` 提供了异常处理机制,如 `.Unwrap()` 解包嵌套的异常,或者 `.Catch` 来捕获异常。
```csharp
try
{
var task = Task.Run(() => { throw new Exception("Something went wrong!"); });
await task.Catch(exception => Console.WriteLine($"Caught exception: {exception.Message}"));
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
阅读全文