【一句话解释一个技术点】ManualResetEvent

当你在某个例程中看到ManualResetEvent你可能会很好奇这是个什么东西,于是百度,发现了这样的解释ManualResetEvent 是一线程用来控制别一个线程的信号。然后看了例程一头雾水,那这篇文章就是来拯救你的。

一句话解释ManualResetEvent其实就相当于多线程中的一个门。

详细解释:比如你在听着歌码着代码,这可以看做是两个线程并行,这时候你遇到了一个复杂的问题,你敲代码的线程就得告诉听歌的线程说:歌先关一下,我专心敲个代码,等到这个问题解决了,敲代码的线程又告诉听歌的线程说,来来来,继续听歌。那ManualResetEvent其实就是做这个事情的。

我们看一下怎么用:private ManualResetEvent _mer = new ManualResetEvent(true) 这是定义,定义一个门,给门一个初始值,true是门开的,false是门关的。

第二步:在听歌的线程这里,设置一个门

{

//听歌线程的实现

_mer.WaitOne();

}

WaitOne就是设置一个门。

第三步:控制开关门  _mer.Set();开门   _mer.Reset() 关门

当门是开的,程序就能通过waitone这个门,如果门是关的,程序就在门那里等待。下面看个例子:

【一句话解释一个技术点】ManualResetEvent

【一句话解释一个技术点】ManualResetEvent

点击开始,开启一个线程,每两秒打印一个时间。  点击reset关门,则停止打印,点击set开门,则又开始打印。具体源码的地址为:

http://download.****.net/download/nxy_wuhao/10158776