C# 使用 CancellationTokenSource 终止线程

本文介绍了如何使用CancellationTokenSource在C#中优雅地终止线程,强调了它与Task的配合使用,包括直接取消、定时取消以及如何管理多个CancellationTokenSource以实现任意任务取消时终止所有任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在多线程中通常使用一个bool IsExit类似的代码来控制是否线程的运行与终止,其实使用CancellationTokenSource来进行控制更为好用,下面我们将介绍CancellationTokenSource相关用法。

C# 使用 CancellationTokenSource 终止线程

使用CancellationTokenSource对象需要与Task对象进行配合使用,Task会对当前运行的状态进行控制(这个不用我们关心是如何孔控制的)。而CancellationTokenSource则是外部对Task的控制,如取消、定时取消。

下面我们来看看示例代码


class Program
    {
        //声明CancellationTokenSource对象
        static CancellationTokenSource cancelTokenSource = new CancellationTokenSource();
 
        //程序入口
        static void Main(string[] args)
        {
            Task.Factory.StartNew(MyTask, cancelTokenSource.Token);
 
            Console.WriteLine("请按回车键(Enter)停止");
            Console.ReadLine();
 
            cancelTokenSource.Cancel();
            
            Console.WriteLine("已停止");
            Console.ReadLine();
        }
 
        //测试方法
        static void MyTask()
        {
            //判断是否取消任务
            while (!cancelTokenSource.IsCancellationRequested)
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值