AutoResetEvent 一个体现通知机制的例子
来源:互联网 发布:json格式http协议通信 编辑:程序博客网 时间:2024/05/22 12:50
例子描述:两个线程,一个线程给公共变量附值后,通知另一个等待的线程把公共变量读出来。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;namespace WindowsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } //创建一个事件变量,初始状态为无信号 public static AutoResetEvent myRestEvent = new AutoResetEvent(false); //公共存储变量 public static int number = 0; private void button1_Click(object sender, EventArgs e) { Thread.CurrentThread.Name = "写线程"; //创建一个读取公共存储变量的读线程 Thread myReadThread = new Thread(new ThreadStart(MyReadThreadProc)); myReadThread.Name = "读线程"; myReadThread.Start(); //循环把I值 附给 公共存储变量 for (int i = 0; i < 100; i++) { show(Thread.CurrentThread.Name + ":写入值" + i.ToString()); number = i; myRestEvent.Set();//发送一个信号给读线程 Thread.Sleep(1); //给读线程一个操作时间,不写显示就会乱。 } myReadThread.Abort(); //因为读线程是一个死循环,所以要用Abort终止读线程 } public void MyReadThreadProc() { while (true) { myRestEvent.WaitOne(); //停止往下执行直到信号到来 show(Thread.CurrentThread.Name + ":读到值" + number.ToString());//信号来了后,执行读公共存储的操作。 } } /// <summary> /// 向主界面richTextBox1显示信息, /// </summary> /// <param name="message">要显示的信息</param> /// <param name="threadname">当前线程的名字</param> public void show(string message) { //richTextBox1控件的Modifiers属性要设为Public,这样才可以调用的到 this.richTextBox1.Invoke(new EventHandler(delegate { if (this.richTextBox1.Text.Length > 5069) this.richTextBox1.Clear(); this.richTextBox1.Text += message + Environment.NewLine; this.richTextBox1.Select(this.richTextBox1.Text.Length, 0); this.richTextBox1.ScrollToCaret(); })); } }}
- AutoResetEvent 一个体现通知机制的例子
- 线程通知机制 关键字 AutoResetEvent
- 体现多态好处的一个例子
- 体现三层的例子
- 一个体现Java接口及工厂模式优点的例子
- 一个体现Java接口及工厂模式优点的例子
- 一个体现Java接口及工厂模式优点的例子
- 一个体现Java接口及工厂模式优点的例子
- 一个体现Java接口及工厂模式优点的例子
- 一个体现Java接口及工厂模式优点的例子
- 使用信号实现异步通知机制的例子
- 一个很短但能够体现C++的多态的例子
- (转)一个体现Java接口及工厂模式优点的例子
- 一个体现Java接口及工厂模式优点的例子(经典)
- 设计模式:一个体现Java接口及工厂模式优点的例子
- 一个例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- OO多态性的一个体现
- 一个简单的演示SQL2005的查询通知的例子
- List 排序
- JVM_Bind端口被占用的解决办法(涉及CMD命令NETSTAT的使用)
- set,list,map区别与联系
- UNIX高手的20个习惯
- 老白对rac优化的建议
- AutoResetEvent 一个体现通知机制的例子
- 剪刀石头布
- 无题
- 如何使用FacesContext类
- 】Android横竖屏总结
- Corona SDK的优与劣
- joj1026---终于知道了解数据类型的作用了
- web开发中的四个域对象生命周期 作用域详细介绍
- Java本地应用 使用spring 注解初始化