码迷,mamicode.com
首页 > 其他好文 > 详细

EventWaitHandle

时间:2016-03-18 00:20:18      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:

在查资料的过程中,我突然想到一个类:EventWaitHandle,也就是本文的主角。

  这个类通过在线程之间设置信号量,可以非常方便的控制线程运行的顺序。具体代码如下:

  首先全局申明:

 EventWaitHandle myHandle = new EventWaitHandle(false, EventResetMode.ManualReset);  //将信号状态置为非终止,使用手动重置

  其次在大数据处理的函数开始加上

 myHandle.Reset();//让其他需要等待的线程阻塞

  末尾加上:

myHandle.Set();  //允许其他等待的线程运行

  具体形式如下:

 private void DealDataInformation(ListView listview,string fileName,EnumX enums)
{
myHandle.Reset();//让其他需要等待的线程阻塞
    ....................
myHandle.Set(); //允许其他等待的线程运行
}

  其中Reset方法可以让本函数进行处理,而让其他在线程上的未接收到信号量的函数进入阻塞状态,而Set方法则是释放信号量,以便通知阻塞线程当前处理结束,可以继续进行。

  那么怎么控制哪些函数需要阻塞呢? 很简单:

  直接在函数的入口处加上:

private void ColorTheResultAsync(EnumX enums,ListView listview)
{
myHandle.WaitOne(); //处于等待状态,直到收到Set的信号
.........
}

 

EventWaitHandle

标签:

原文地址:http://www.cnblogs.com/gosteps/p/5289885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!