9
A
回答
18
您应该通过ManualResetEvent来做到这一点。
ManualResetEvent mre = new ManualResetEvent();
mre.WaitOne(); // This will wait
在另一个线程上,显然你需要一个对ManualResetEvent
实例的引用。
mre.Set(); // Tells the other thread to go again
完整的例子,它将打印一些文本,等待另一个线程做一些事情,然后重新开始:
class Program
{
private static ManualResetEvent mre = new ManualResetEvent(false);
static void Main(string[] args)
{
Thread t = new Thread(new ThreadStart(SleepAndSet));
t.Start();
Console.WriteLine("Waiting");
mre.WaitOne();
Console.WriteLine("Resuming");
}
public static void SleepAndSet()
{
Thread.Sleep(2000);
mre.Set();
}
}
4
相关问题
- 1. 暂停/恢复另一个线程
- 2. 线程暂停/停止活动恢复
- 3. 暂停/恢复线程?
- 4. 暂停和恢复线程
- 5. 暂停和恢复一个C++线程在另一个
- 6. Java ExecutorService暂停/恢复特定线程
- 7. 如何暂停和恢复线程
- 8. 线程暂停/恢复问题
- 9. 安全地暂停和恢复线程
- 10. Perl线程不会暂停/恢复
- 11. 恢复和暂停ArrayList中的线程
- 12. 如何暂停和恢复surfaceView线程
- 13. 如何暂停和恢复线程?
- 14. 在Android中暂停和恢复线程
- 15. 工作线程暂停/恢复实施
- 16. VB.Net线程暂停和恢复
- 17. 如何暂停/恢复线程
- 18. 线程暂停但不恢复
- 19. 控制线程暂停和恢复一组工作线程
- 20. 暂停和恢复一个线程(后台工作者)
- 21. 修复线程池:暂停直到线程可用?
- 22. 暂停和恢复从另一个线程在C中的线程#
- 23. 如何销毁一个线程,暂停/挂起一个线程,恢复/运行一个线程?
- 24. VB.Net暂停和恢复对下一个
- 25. “暂停”和“恢复”一个ng-repeat
- 26. 暂停和恢复一个Bash脚本
- 27. 线程同步和线程暂停\恢复
- 28. 从cpp的父线程中暂停并恢复线程
- 29. Android:暂停并恢复活动中的线程
- 30. 暂停和恢复线程绘制到SurfaceView
我从来没有这样做过,但我一起阻断的思路思考线程使用ManualResetEvent。 –
@ByteBlast:它看起来像是重复的,但是对另一个问题的回答并不是特别好:/ – Ian
确保只对后台线程执行此操作。 UI线程(任何已加入COM STA的线程,通常是主线程,并且通常是任何拥有窗口的线程)*必须*继续运行并泵送消息,否则将导致稳定性问题。 –