C#WinForm实现线程的启动、挂起、恢复、终止操作
2020-02-02 10:23
771 查看
public partial class Form1 : Form { Thread t = null; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { t = new Thread(new ThreadStart(Run)); t.Start(); } public void Run() { for (int i = 1; i < 20000; i++) { this.Invoke(new Action( () => { this.richTextBox1.Text = "第" + i + "条记录同步完成"; this.progressBar1.Value = i / 200; this.label2.Text = i / 200 + "%"; } )); Thread.Sleep(10); } } private void button2_Click(object sender, EventArgs e) { Thread.Sleep(5000); } private void button3_Click(object sender, EventArgs e) { if (t.ThreadState!=ThreadState.Suspended) { t.Suspend(); } } private void button4_Click(object sender, EventArgs e) { if (t.ThreadState == ThreadState.Suspended) { t.Resume(); } } private void button5_Click(object sender, EventArgs e) { t.Abort(); } string str = ""; private void button6_Click(object sender, EventArgs e) { t = new Thread(new ParameterizedThreadStart(RunB)); A a = new A() { X = this.textBox1.Text, Y = this.textBox3.Text }; t.Start(a);//启动线程 } public void Run1() { str = "[" + this.textBox1.Text + "]"; for (int i = 1; i < 20000; i++) { this.Invoke(new Action( () => { this.richTextBox1.Text = str+"第" + i + "条记录同步完成"; this.progressBar1.Value = i / 200; this.label2.Text = i / 200 + "%"; } )); Thread.Sleep(10); } } private void RunB(object a) { for (int i = 1; i < 20000; i++) { // Invoke (委托 ) // Action ( lambda ) // Invoke ( new Action ( ()=>{} )); this.Invoke(new Action( () => { this.richTextBox1.Text = ((A)a).X + "第" + i + "条记录同步完成" + ((A)a).Y; this.progressBar1.Value = i / 200; this.label2.Text = i / 200 + "%"; } )); Thread.Sleep(10); } } private void Form1_Load(object sender, EventArgs e) { Control.CheckForIllegalCrossThreadCalls = false; } class A { public string X { get; set; } public string Y { get; set; } } }
- 点赞 2
- 收藏
- 分享
- 文章举报
相关文章推荐
- iOS边练边学--多线程NSOperation介绍,子类实现多线程的介绍(任务和队列),队列的取消、暂停(挂起)和恢复,操作依赖与线程间的通信
- C# winform 多线程异步操作线程启动暂停与恢复
- C#多线程开发2:线程挂起,恢复与中止等操作
- 点击button按钮后,启动一个实现鼠标拖动另一个button的线程 (JFrame/C# WinForm)
- C#实现WinForm随WINDOWS服务一起启动
- C#操作注册表 实现快捷启动程序
- JAVA并发实现三(线程的挂起和恢复)
- C#实现winform软件开机自动启动并最小化到系统托盘
- C# 线程的暂停和恢复的 实现
- 【Java并发编程】之三:线程挂起、恢复与终止的正确方法(含代码)
- C#中利用委托实现多线程跨线程操作
- C# 挂起恢复运行线程代码
- C# BackgroundWorker实现WinForm异步操作的例子
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- 【Java并发编程】之三:线程挂起、恢复与终止的正确方法(含代码)
- Java并发编程之三:线程挂起、恢复与终止的正确方法
- Java 并发编程之线程挂起、恢复与终止
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- C# Winform打包部署时添加注册表信息实现开机启动
- C# BackgroundWorker实现WinForm异步操作的例子