c# task令牌暂停
时间: 2024-09-20 09:12:41 浏览: 33
深入分析C# Task
在 C# 中,`Task` 类提供了一种机制,叫做 `CancellationToken`(令牌),用于控制异步操作的执行流程。`CancellationToken` 可以被用来暂停或取消任务的执行。当你有一个长时间运行的操作,例如网络请求、文件读取等,而用户希望取消操作时,你可以创建一个 `CancellationTokenSource` 来生成一个 `CancellationToken`。
下面是一个简单的例子:
```csharp
// 创建一个 CancellationTokenSource
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
// 获取其生成的令牌
CancellationToken token = cancellationTokenSource.Token;
// 启动任务,并传递这个令牌
Task.Run(() =>
{
while (true)
{
// 检查令牌是否已取消
if (token.IsCancellationRequested)
break; // 如果令牌被取消,跳出循环
// 执行耗时操作...
// 这里可以定期检查令牌状态
System.Threading.Tasks.Task.Delay(500).Wait(token); // 使用令牌暂停操作
}
// 当任务结束时,释放资源
cancellationTokenSource.Cancel();
cancellationTokenSource.Dispose();
}, token);
```
在这里,`IsCancellationRequested` 属性会检查令牌是否被取消,如果是,则说明用户希望停止当前操作,所以会退出循环并调用 `Cancel()` 方法来正式取消任务。`Wait(token)` 方法在等待期间会检查令牌,当令牌被取消时,会立即中断等待。
阅读全文