C#TASK 使用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/iQOj 著作权归作者所有。请勿转载和采集!