首页 > 其他 > 详细

异步等待(ManualResetEvent

时间:2015-10-02 17:20:37      阅读:356      评论:0      收藏:0      [点我收藏+]

 

ManualResetEvent实现异步等待,超过时间 不做处理,继续往下执行代码

(ManualResetEvent 涉及一个线程在其他线程进行之前必须完成的任务)

技术分享
 1 ManualResetEvent[] mre = new ManualResetEvent[2];
 2 
 3             mre[0] = new ManualResetEvent(false);
 4             shoppingbll spb = new shoppingbll(mre[0], dict);
 5             Thread thd1 = new Thread(new ThreadStart(spb.GetGPrice));
 6             thd1.Start();
 7 
 8             mre[1] = new ManualResetEvent(false);
 9             farebll pfb = new farebll(mre[1], dict);
10             Thread thd2 = new Thread(new ThreadStart(pfb.GetfarePrice));
11             thd2.Start();
12 
13             //停顿12s 超过12s后,执行后面代码,不再等待
14             WaitHandle.WaitAll(mre, 12000, false);
View Code

 

GetGPrice 方法(GetfarePrice类似) ,调用ManualResetEvent 的set()方法  返回信号;

技术分享
public void GetGalilePrice()
        {
            try
            {
                 //todo
            }
            catch (Exception e)
            {

            }
            finally
            {
                if (_mre != null)
                {
                    _mre.Set();//返回完成信号
                }
            }
        }
View Code

 

参考:

http://www.cnblogs.com/li-peng/p/3291306.html

http://www.cnblogs.com/springyangwc/archive/2011/10/12/2208991.html

异步等待(ManualResetEvent

原文:http://www.cnblogs.com/systemkk/p/4852375.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!