标签:
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);
GetGPrice 方法(GetfarePrice类似) ,调用ManualResetEvent 的set()方法 返回信号;
public void GetGalilePrice() { try { //todo } catch (Exception e) { } finally { if (_mre != null) { _mre.Set();//返回完成信号 } } }
参考:
http://www.cnblogs.com/li-peng/p/3291306.html
http://www.cnblogs.com/springyangwc/archive/2011/10/12/2208991.html
标签:
原文地址:http://www.cnblogs.com/systemkk/p/4852375.html