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的線程,通常是主線程,並且通常是任何擁有窗口的線程)*必須*繼續運行並泵送消息,否則將導致穩定性問題。 –