ThreadPauseandResumec#我有几个帖子,如何暂停/恢复它们?来自重复的问题:如何暂停5个线程并记住它们的状态。因为一个在吃另一个在想等等。如果你正在使用System.Threading.Thread,你可以调用Suspend和Resume。但不推荐这样做。当您调用Suspend时,没有人知道线程可能在做什么。例如,如果在线程持有锁时调用Suspend,或者打开文件进行独占访问,则没有其他任何东西可以访问锁定的资源。正如Thread.Suspend的文档所说:不要使用Suspend和Resume方法来同步线程活动。当您挂起线程时,您无法知道线程正在执行什么代码。如果一个线程在安全权限评估期间被挂起时被挂起,它可能会阻塞AppDomain中的其他线程。如果线程在执行类构造函数时被挂起,它会阻止AppDomain中尝试使用该类的其他线程。死锁很容易发生。通常,您使用事件等同步原语来控制线程的活动。线程将等待事件(参见AutoResetEvent和ManualResetEvent)。或者,如果线程正在为队列提供服务,您可以使用BlockingCollection之类的东西,以便线程可以等待将某些内容放入队列。所有这些非忙等待技术都比任意挂起和重新启动线程要好得多,并且不会遭受潜在的灾难性后果。看看第一个例子Monitor.Wait和Monitor.Pulse-MarcGravell在这里有一个很好的例子。您很可能会考虑使用生产者/消费者队列。您必须在主线程中使用同步技术MSDN线程同步:ManualResetEventre=newManualResetEvent(true);在所有线程中,在“战略”点:re.WaitOne();在主线程中,停止线程:re。重置();并重新启动:re.Set();您可以使用Suspend()和Resume()。http://msdn.microsoft.com/en-us/library/system.threading.thread.resume.aspxhttp://msdn.microsoft.com/en-us/library/system.threading.thread.suspend.aspx您还可以阅读:暂停和恢复线程的替代方法是什么?以上就是C#学习教程:线程暂停与恢复c#分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
