有两个事件A,B他们是同时触发的,并且是在不同的线程中执行的,怎么将事件B锁起来,等事件A执行完以后再执行事件B?

解决方案 »

  1.   

    基本上不太不可能完全同时。
    线程要同步的话,共同使用一个AutoResetEvents对象或ManualResetEvents对象,需要对待的线程执行WaitOne,那边做得差不多了这边可以启动的时候就执行Set,等待的线程就可以继续了。
      

  2.   

    class Form1:Form
    {
       private AutoResetEvents are=null;
       ...
       
       private void Form1_Load(object sender,EventArgs e)
       {
        are=new AutoResetEvents(false);
        ...
        }    private void ThreadProc1()
        {
          ...
          are.WaitOne();//这个时候这个线程就会被暂停
           ...
         }
        private void ThreadProc2()
        {
          ...
          are.Set();//那边可以开始了
           ...
         }
    }
    //没有给出创建线程启动线程的代码
      

  3.   

    谢谢芥子  不过好像是AutoResetEvent不是AutoResetEvents