我可以等待特定的后台线程完成,然后另一个后台线程启动吗?我可以等待一个特定的后台线程完成,然后另一个后台线程启动?
回答
是的。
如果您提供更多信息,我们可以在答案中提供更多详细信息。
通常,您建立一个通信系统(消息队列,事件或委托),用于表示进程/步骤/线程已完成。发生这种情况时,请启动下一个线程。
+1船长明显。 =) – 2010-10-13 16:44:30
当然。让第一个线程启动第二个线程,或设置某种标志告诉主机应用程序启动第二个线程。当然,我必须问:如果这些线程总是按顺序运行,为什么创建第二个线程而不是在第一个线程中执行所有工作?
“为什么要创建第二个线程” - 这通常是正确的,除非第二个线程在第一个线程完成之前可以执行一些*处理。有时候,你可以做一半的工作,但需要等待结果等等。 – 2010-10-13 16:50:12
在.NET 4中,您可以用任务而不是线程,然后使用延续到实现自己的目标:
var firstTask = Task.Factory.StartNew(() => PerformSomeLongRunningAction(););
var secondTask = firstTask.ContinueWith(t => PerformSecondAction(););
在.NET < = 3.5,该选项会有所不同。最好的方法是使用WaitHandle来表示你的第二项任务。第一个后台线程需要将信号等待句柄它完成时:
var mre = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem(o =>
{
PerformSomeLongRunningAction();
mre.Set(); // Signal to second thread that it can continue
});
ThreadPool.QueueUserWorkItem(o =>
{
mre.WaitOne(); // Wait for first thread to finish
PerformSecondAction();
});
我刚刚学到了一些东西;今天不会是一个完全的浪费! – 2010-10-13 16:48:46
@David:很高兴听到;) – 2010-10-13 16:49:28
是创建的任务运行在一个单独的线程?看起来这可能只是围绕'Thread'的一个更友好的包装。 – 2010-10-13 16:50:49
- 1. 请等待后台线程?
- 2. 如何让UI线程等待后台线程完成?
- 3. 等待所有线程完成一份工作,然后再做另一个
- 4. jquery:等待脚本完成,然后再启动另一个
- 5. 好吧,从其他后台线程启动后台线程? (NSObj)
- 6. Perl:等待后台进程完成
- 7. 如何等待所有后台线程完成(在C#中)?
- 8. C#生成新线程,然后等待
- 9. 等待函数完成后再继续主(一个线程)
- 10. 的Java:一个后台线程
- 11. 后台线程
- 12. 后台线程
- 13. 主线程不会等待另一个线程完成执行
- 14. 如何让一个线程等待另一个线程的一部分完成?
- 15. 在google appengine后台运行只有一个后台线程
- 16. Ruby多个后台线程
- 17. 我如何等待后台线程的结果,然后再显示它?
- 18. 主线程正在等待更新接口的后台线程
- 19. 等待另一个线程
- 20. 可以构建在后台线程的形式,然后在UI线程显示
- 21. 完成一个动画,然后启动另一个动画
- 22. 前台线程VS后台线程
- 23. 使一个线程等待另一个完成
- 24. 如何启动后台线程?
- 25. 我可以在死后再次启动一个线程吗?
- 26. 如何在完成另一个线程后运行一个线程
- 27. Java后台线程
- 28. Android:后台线程
- 29. KVO后台线程
- 30. tomcat后台线程
你应该接受一些你的答案 - 它会让人更快乐,以回复您的问题。 – 2010-10-13 16:43:56