【一句话解释一个技术点】ManualResetEvent
当你在某个例程中看到ManualResetEvent你可能会很好奇这是个什么东西,于是百度,发现了这样的解释ManualResetEvent 是一线程用来控制别一个线程的信号。然后看了例程一头雾水,那这篇文章就是来拯救你的。
一句话解释ManualResetEvent其实就相当于多线程中的一个门。
详细解释:比如你在听着歌码着代码,这可以看做是两个线程并行,这时候你遇到了一个复杂的问题,你敲代码的线程就得告诉听歌的线程说:歌先关一下,我专心敲个代码,等到这个问题解决了,敲代码的线程又告诉听歌的线程说,来来来,继续听歌。那ManualResetEvent其实就是做这个事情的。
我们看一下怎么用:private ManualResetEvent _mer = new ManualResetEvent(true) 这是定义,定义一个门,给门一个初始值,true是门开的,false是门关的。
第二步:在听歌的线程这里,设置一个门
{
//听歌线程的实现
_mer.WaitOne();
}
WaitOne就是设置一个门。
第三步:控制开关门 _mer.Set();开门 _mer.Reset() 关门
当门是开的,程序就能通过waitone这个门,如果门是关的,程序就在门那里等待。下面看个例子:
点击开始,开启一个线程,每两秒打印一个时间。 点击reset关门,则停止打印,点击set开门,则又开始打印。具体源码的地址为:
http://download.****.net/download/nxy_wuhao/10158776