对多线程的挂起,suspend已过期,有没有好用的替代方法对多个线程中的任意多个实现挂起?在线等求教

解决方案 »

  1.   

    这个帖子谈到这个问题:http://msmvps.com/blogs/peterritchie/archive/2006/10/13/_2700_System.Threading.Thread.Suspend_280029002700_-is-obsolete_3A00_-_2700_Thread.Suspend-has-been-deprecated_2E00__2E00__2E00_.aspx
      

  2.   

    不要使用 Suspend 和 Resume 方法来同步线程的活动。您无法知道挂起线程时它正在执行什么代码。如果您在安全权限评估期间挂起持有锁的线程,则 AppDomain 中的其他线程可能被阻止。如果您在线程正在执行类构造函数时挂起它,则 AppDomain 中试图使用该类的其他线程将被阻止。很容易发生死锁。
     
    Thread.Sleep 方法
    调用 System.Threading.Thread.Sleep 方法会导致当前线程立即阻止,阻止时间的长度等于传递给 System.Threading.Thread.Sleep 的毫秒数,这样,就会将其时间片中剩余的部分让与另一个线程。一个线程不能针对另一个线程调用 System.Threading.Thread.Sleep。 调用 System.Threading.Thread.Sleep 及 System.Threading.Timeout.Infinite 将使线程休眠,直到被调用 System.Threading.Thread.Interrupt 的另一个线程中断,或被 System.Threading.Thread.Abort 终止。 
      

  3.   

    看看这个或许有点参考
    带有消息机制的线程 - CustomMessageQueue(c#) 
      

  4.   

    我是没感觉到挂起和休眠没什么区别   现在就我所知替换suspend的办法就楼上说两个  一个重写thread类中的方法来实现  向二楼那样  不过核心代码  我不懂 呜呜  或者还有消息控制   可是最本质的方法是什么呢  到底是那个东西  替代了 suspend来实现对线程的挂起