C# 任务取消:使用 CancellationToken
在 C# 中,可以使用 CancellationToken 来取消一个操作。CancellationToken 是一个结构体,用于传递取消请求给操作。
首先,需要创建一个 CancellationTokenSource 对象,用于生成 CancellationToken。然后,可以通过调用 CancellationTokenSource 的 Cancel 方法来请求取消操作。
以下是一个示例代码,演示如何使用 CancellationToken 来取消一个操作:
using System;
using System.Threading;
class Program
{
static void Main()
{
// 创建一个 CancellationTokenSource 对象
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
// 获取 CancellationToken
CancellationToken cancellationToken = cancellationTokenSource.Token;
// 启动一个新的任务
Task task = Task.Run(() =>
{
// 模拟一个耗时操作
for (int i = 0; i < 10; i++)
{
// 检查是否有取消请求
if (cancellationToken.IsCancellationRequested)
{
Console.WriteLine('操作已取消');
return;
}
// 模拟耗时操作
Thread.Sleep(1000);
Console.WriteLine('正在执行操作...');
}
Console.WriteLine('操作已完成');
}, cancellationToken);
// 等待用户输入
Console.WriteLine('按下任意键来取消操作');
Console.ReadKey();
// 请求取消操作
cancellationTokenSource.Cancel();
// 等待任务完成
task.Wait();
Console.WriteLine('任务已完成');
}
}
在上面的示例中,我们创建了一个新的任务,并在任务中模拟一个耗时操作。在每次循环中,我们使用 cancellationToken.IsCancellationRequested 属性来检查是否有取消请求。如果有取消请求,我们就终止操作并返回。
在主线程中,我们等待用户按下任意键来取消操作。一旦用户按下键,我们调用 cancellationTokenSource.Cancel 方法来请求取消操作。
然后,我们等待任务完成,然后输出任务已完成的消息。
通过使用 CancellationToken,我们可以在某个特定点上取消一个操作,以便及时释放资源并停止操作的执行。
原文地址: https://www.cveoy.top/t/topic/qwUE 著作权归作者所有。请勿转载和采集!