通过set和waitOne来控制子线程的运行和停止
2013-09-11 22:56
211 查看
public partial class Form1 : Form { //自动重置事件类 //主要用到其两个方法 WaitOne() 和 Set() , 前者阻塞当前线程,后者通知阻塞线程继续往下执行 AutoResetEvent autoEvent = new AutoResetEvent(false); public Form1() { InitializeComponent(); } public static bool _stop=true; private void button3_Click(object sender, EventArgs e) { int i = 0; Thread NewThread = new Thread(Run); NewThread.Start(i); } private void Run(object i) { Control.CheckForIllegalCrossThreadCalls = false; int j = (int)i; while (true) { j++; Thread.Sleep(1000); label1.Text = j.ToString(); label1.Refresh(); if(_stop) autoEvent.WaitOne(); //阻塞当前线程,等待通知以继续执行 } } private void button1_Click(object sender, EventArgs e) { autoEvent.Set(); //通知阻塞的线程继续执行 _stop = false; } private void button2_Click(object sender, EventArgs e) { _stop = true; } }
相关文章推荐
- 一种控制线程运行和停止的方法
- 线程工具类-通过信号量、计时器等机制控制多线程之间的运行阻塞-笔记整理11
- 写程序 控制cpu占用率-4 绘制CPU使用率的正弦曲线2 通过C#指定线程运行的 CPU
- java线程控制,当stop按钮就停止,当start按钮就开始运行,当按stop时程序又停止的实现方法
- Android中通过ViewHelper.setTranslationY实现View移动控制(NineOldAndroids开源项目)
- 通过设置进程或线程的亲缘性(affinity),使进程或线程在指定的CPU(核)上运行
- Android中通过ViewHelper.setTranslationY实现View移动控制(NineOldAndroids开源项目)
- 通过设置标志位让线程停止
- 后台线程与setDaemon()方法和线程的强制运行
- java动态控制线程的启动和停止
- 通过监控线程状态来保证socket服务器的稳定运行
- 控制反转(IOC)、依赖注入(DI)之通过set方法注入
- 小问题可能存在大问题,希望大神帮忙解答。Spark本地运行模式中单线程与多线程问题之setMaster("local")可以运行,但是设置成setMaster("local[3]")或setMaste
- java停止线程 interrupt 和守护线程setDaemon
- 如何停止一个正在运行的java线程
- SetThreadAffinityMask 把线程限定在CPU上运行
- 通过提高线程优先级保证高实时任务的运行平稳
- 线程工具类(根据电脑逻辑处理器个数控制同时运行的线程个数)
- Java并发(基础知识)—— 创建、运行以及停止一个线程
- 如何用通过C++11提供的std::condition_variable实现主线程控制子线程的启动和停止