using ;
using .Collections.Generic;
using .ComponentModel;
using .Data;
using .Drawing;
using .Text;
using .Windows.Forms;
WindowsApplication35
{
public partial Form1 : Form
{
public Form1
{
InitializeComponent;
}
.Threading.ManualReEvent mEvent = .Threading.ManualReEvent(true);
//判断线程安全退出信号量
.Threading.ManualReEvent mEventStopAll = .Threading.ManualReEvent(false);
//*******ManualReEvent使用方法
private void button1_Click(object sender, EventArgs e)
{
//个线程模拟写入
.Threading.Thread(invokeWrite).Start;
//两个线程模拟读取
.Threading.Thread(invokeRead).Start;
.Threading.Thread(invokeRead).Start;
}
private void invokeWrite
{
for ( i = 0; i < 100; i)
{
//判断线程安全退出
(mEventStopAll.WaitOne(10, false) true) ;
//设置信号量,假设更新数据需要2秒,每更新次暂停2秒.
mEvent.Re;
Console.WriteLine("正在更新...");
.Threading.Thread.Sleep(2000);
mEvent.Set;
.Threading.Thread.Sleep(2000);
}
}
private void invokeRead
{
while (mEvent.WaitOne true)
{
//判断线程安全退出
(mEventStopAll.WaitOne(10, false) true) ;
//假设读取体数据用10毫秒.他需要判断信号量开关.
Console.WriteLine("读取条数据:");
.Threading.Thread.Sleep(10);
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
mEventStopAll.Set;
}
}
}
最新评论