一、CancellationTokenSource 提供取消信号,用于通知异步操作“你该停了”。
- 作用:生成一个取消令牌(CancellationToken),并控制是否发出取消请求。
- 使用场景:你想在异步操作中支持“中途取消”。
- 关键成员:
2. Cancel():触发取消信号。
3. CancelAfter(TimeSpan):延迟取消。
Code: [全选] [Expand/Collapse]
- Console.WriteLine("1.生成一个取消令牌(CancellationToken),并在 5 秒钟后发出取消请求。");
- var cts = new CancellationTokenSource();
- cts.CancelAfter(TimeSpan.FromSeconds(5));
- Console.WriteLine("2.调用异步任务 DoWorkAsync ...");
- await DoWorkAsync(cts.Token);
- Console.WriteLine("3.程序结束");
- async Task DoWorkAsync(CancellationToken token)
- {
- int i = 0;
- while (!token.IsCancellationRequested)
- {
- await Task.Delay(1000);
- Console.WriteLine($" 第{++i}秒. Working...");
- }
- Console.WriteLine(" 任务被取消!");
- }
Code: [全选] [Expand/Collapse]
- 1.生成一个取消令牌(CancellationToken),并在 5 秒钟后发出取消请求。
- 2.调用异步任务 DoWorkAsync ...
- 第1秒. Working...
- 第2秒. Working...
- 第3秒. Working...
- 第4秒. Working...
- 第5秒. Working...
- 任务被取消!
- 3.程序结束