请问下,如果有这两个线程
            Thread thread1 = new Thread(new ThreadStart(speed));
            Thread thread2 = new Thread(new ThreadStart(time));    speed和time是俩方法名。怎么在程序里先后调用呢? 需要调用thread1三秒钟的时候,thread2不动。 thread1调用完后就暂停,然后调用thread2三秒钟。怎么设置噢?  

解决方案 »

  1.   

    timer,3秒间隔,先暂停2,然后1执行,下一次就是2执行,1暂停
      

  2.   

    用ManualResetEvent等同步对象控制,
      

  3.   

    您好,能说详细点么?暂停是用sleep还是abort呢?如果可以帮我打可以么?
      

  4.   

    流程有点乱挖
    thread1再3秒内就完成了  应该如何调用呢?直接是后者?
      

  5.   

    不是,thread1在三秒后还没有完成,不过三秒后要先运行thread2 然后再反过来运行thread1,循环。
      

  6.   

    AutoResetEvent和ManualResetEvent这两个类经常用到, 他们的用法很类似,但也有区别。Set方法将信号置为发送状态,Reset方法将信号置为不发送状态,WaitOne等待信号的发送。可以通过构造函数的参数值来决定其初始状态,若为true则非阻塞状态,为false为阻塞状态。如果某个线程调用WaitOne方法,则当信号处于发送状态时,该线程会得到信号, 继续向下执行。其区别就在调用后,AutoResetEvent.WaitOne()每次只允许一个线程进入,当某个线程得到信号后,AutoResetEvent会自动又将信号置为不发送状态,则其他调用WaitOne的线程只有继续等待.也就是说,AutoResetEvent 一次只唤醒一个线程;而ManualResetEvent则可以唤醒多个线程,因为当某个线程调用了ManualResetEvent.Set()方法后,其他调l用WaitOne的线程获得信号得以继续执行,而ManualResetEvent不会自动将信号置为不发送。也就是说,除非手工调用了 ManualResetEvent.Reset()方法,则ManualResetEvent将一直保持有信号状态,ManualResetEvent也就可以同时唤醒多个线程继续执行。Mutex混合了 AutoResetEvent与anualResetEvent的一些特性,简单来说:
    1.Mutex和AutoResetEvent一样,只能允许一个线程进入。当一个线程获得许可之后,其它等待的线程必须继续等待;
    2.Mutex和ManualResetEvent一样,必须手动释放许可证,即调用Mutex.ReleaseMutex()方法。