如何在C#中中止,暂停和恢复线程?
发布时间:2020-12-15 17:50:24 所属栏目:百科 来源:网络整理
导读:如何在C#中中止,暂停和恢复线程? 相关问题: Is there a way to indefinitely pause a thread? 解决方法 一般来说,不要暂停(或中止)线程 – 您通常不能告诉它正在做什么,这可能会导致各种锁定问题,例如未释放的锁或类型初始化程序(静态构造函数)被挂起. 但
如何在C#中中止,暂停和恢复线程?
相关问题: Is there a way to indefinitely pause a thread? 解决方法
一般来说,不要暂停(或中止)线程 – 您通常不能告诉它正在做什么,这可能会导致各种锁定问题,例如未释放的锁或类型初始化程序(静态构造函数)被挂起.
但是,您可能会通过更优雅的方法暂停代码 – 例如,在循环中使用ManualResetEvent,外部代码(在另一个线程上)可以打开和关闭: // worker loop while(alive) { // if the gate is closed,wait up to 5 seconds; if still not // open,go back to the loop-start to re-check "alive" if (!gate.WaitOne(5000)) continue; // do work... } 那么另一个具有访问权限的线程(可能是间接的)可以暂停(重置)并恢复(设置)工作者,但是知道它只能在安全状态下暂停. 回复你的评论(另一个答复) – 听起来你有一个读者和作家;理想的生产者/消费者场景.我有一个例子on this question如何编写一个具有上限大小的生产者/消费者(所以如果消费者运行缓慢,它不会沼泽) – 消费者阻止,如果没有数据,生产者阻止如果有太多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |