C#多线程开发之----当有多个线程运行时,如何取消指定线程

 

上图的所有多线程案例大全完整版本项目源代码下载---->点击下载 

多线程是指在同一时间段内,有多个线程在执行不同的任务。多线程的作用包括:

  1. 提高程序的效率:通过同时执行多个任务,可以提高程序的执行效率。

  2. 更好的用户体验:多线程可以让程序在执行某个任务时,同时响应用户的输入或请求,提供更好的用户体验。

  3. 更好的资源利用:多线程可以让多个处理器或核心同时工作,更好地利用计算机的资源。

取消在运行的多线程的原因可能有以下几点:

  1. 节省资源:当不再需要某个线程时,取消该线程可以释放其占用的系统资源,如内存等。

  2. 避免不必要的影响:如果一个线程正在执行一个长时间的操作,并且在该操作完成之前不需要该线程,则取消该线程可以避免不必要的影响,例如防止其他任务无法执行。

  3. 错误处理:如果一个线程在执行过程中出现错误,取消该线程可以确保错误得到正确处理,而不会继续执行可能有害的操作。

private CancellationTokenSource[] cancellSource = new CancellationTokenSource[5];

private void button20_Click(object sender, EventArgs e)
        {
            Action<CancellationTokenSource> action = mi =>
            {
                while (true)
                {
                    if (mi.IsCancellationRequested)
                    {
                        break;
                    }
                    Console.WriteLine($"task-->次执行,线程{Thread.CurrentThread.ManagedThreadId}运行中…");
                    Thread.Sleep(2000);
                }
            };

            List<int> list = new List<int>();
            for (int i = 0; i < 5; i++)
            {
                //list.Add(i);
                int k = i;
                cancellSource[k] = new CancellationTokenSource();
                Task.Run(() => action.Invoke(cancellSource[k]));
            }



private void button19_Click(object sender, EventArgs e)
        {
            int num = 0;
            if (!int.TryParse(textBox1.Text.Trim(), out num))
            {
                MessageBox.Show("请输入数字...!");
                return;
            }
            if (num > 4)
            {
                MessageBox.Show("请输入0-4数字!");
                return;
            }
            //注册任务取消的事件
            cancellSource[num].Token.Register(() =>
            {
                Console.WriteLine($"任务-->{num}被取消后执行业务操作!");
            });
            cancellSource[num].Cancel();//方法请求取消任务,IsCancellationRequested会变成true
        }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值