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

异步等待(ManualResetEvent

时间:2015-10-02 17:22:58      阅读:176      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!