当前位置: 首页 > news >正文

C# task多线程创建,暂停,继续,结束使用

1、多线程任务创建

 private void button1_Click(object sender, EventArgs e) //创建线程{CancellationToken cancellationToken = tokensource.Token;Task.Run(() =>  //模拟耗时任务{for (int i = 0; i < 100; i++){if (cancellationToken.IsCancellationRequested){return;}m.WaitOne(); //当m等于true,才会往下执行,否则一直在此等待textBox1.Text = i.ToString();Thread.Sleep(1000);}}, cancellationToken);//绑定令牌到多线程}

2、线程暂停

 private void button2_Click(object sender, EventArgs e) //暂停线程{m.Reset();  //阻塞线程}

3、线程继续

   private void button3_Click(object sender, EventArgs e) //继续线程{m.Set();}

4、取消线程

   private void button4_Click(object sender, EventArgs e) //取消线程{tokensource.Cancel();}

完整版代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp1
{public partial class Form1 : Form{public Form1(){InitializeComponent();CheckForIllegalCrossThreadCalls = false;}ManualResetEvent m = new ManualResetEvent(true); //实例化阻塞事件CancellationTokenSource tokensource=new CancellationTokenSource(); //声明令牌private void button1_Click(object sender, EventArgs e) //创建线程{CancellationToken cancellationToken = tokensource.Token;Task.Run(() =>  //模拟耗时任务{for (int i = 0; i < 100; i++){if (cancellationToken.IsCancellationRequested){return;}m.WaitOne(); //当m等于true,才会往下执行,否则一直在此等待textBox1.Text = i.ToString();Thread.Sleep(1000);}}, cancellationToken);//绑定令牌到多线程}private void button2_Click(object sender, EventArgs e) //暂停线程{m.Reset();  //阻塞线程}private void button3_Click(object sender, EventArgs e) //继续线程{m.Set();}private void button4_Click(object sender, EventArgs e) //取消线程{tokensource.Cancel();}}
}

软件界面如下

http://www.lryc.cn/news/148620.html

相关文章:

  • 界面控件DevExpress WinForms(v23.2)下半年发展路线图
  • vue实现按需加载的多种方式
  • el-switch组件在分页情况下的使用
  • 【100天精通python】Day49:python web编程_web框架,Flask的使用
  • sql 查重以及删除重复
  • Flux语言 -- InfluxDB笔记二
  • 18.Oauth2-微服务认证
  • vue和node使用websocket实现数据推送,实时聊天
  • 汽车电子笔记之:基于AUTOSAR的多核监控机制
  • GDB 源码分析 -- 断点源码解析
  • SpringMVC概述与简单使用
  • 传输层—UDP原理详解
  • CK-GW06-E03与汇川PLC的EtherNet/IP通信
  • UI界面自动化BagePage
  • 北京开发APP的费用明细
  • 2023年MySQL核心技术第一篇
  • 通讯协议056——全网独有的OPC HDA知识一之接口(十一)IOPCHDA_Playback
  • 数学建模:数据的预处理
  • Linux土遁术之监测监测进程打开文件
  • css让多个盒子强制自动等宽
  • 【高危】Apache Airflow Spark Provider 反序列化漏洞 (CVE-2023-40195)
  • 树模型与集成学习:LightGBM
  • PHP多语言代入电商平台api接口采集拼多多根据ID获取商品详情原数据示例
  • 数据结构(Java实现)-二叉树(下)
  • 如何利用 SmartX 存储性能测试工具 OWL 优化性能管理?
  • 固定资产管理措施怎么写
  • C语言中typedef和const的区别
  • 大数据系列教程之 Kafka基础
  • 【Go 基础篇】Go语言日期与时间函数详解:时间的掌控与转化
  • 抽象工厂模式:创建相关对象族