在 C# 中,可以使用 CancellationToken 来取消一个操作。CancellationToken 是一个结构体,用于传递取消请求给操作。

首先,需要创建一个 CancellationTokenSource 对象,用于生成 CancellationToken。然后,可以通过调用 CancellationTokenSourceCancel 方法来请求取消操作。

以下是一个示例代码,演示如何使用 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,我们可以在某个特定点上取消一个操作,以便及时释放资源并停止操作的执行。

C# 任务取消:使用 CancellationToken

原文地址: https://www.cveoy.top/t/topic/qwUE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录