回答
您可以调用Thread.Join()(MSDN)。像这样:
th.Abort();
th.Join();
对Join()的调用将导致调用线程在继续之前等待该线程终止。
此外,你可能不应该调用Thread.Abort()如果你的工作线程正在与其他任何东西进行交互。
但是,如果用户想要停止该过程?我怎么做没有调用.Abort()方法? – 2011-12-21 13:37:28
最简单的事情就是使用已经取消了取消的BackgroundWorker。请参阅http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx。 Thread.Abort()是杀死线程的一种蛮力方式,只有在您确定在该线程的任何时刻不会产生异常的副作用时才适用。 – 2011-12-21 17:16:22
您可以制作一个小循环等待线程中止。
th.Abort();
while (th.ThreadState.HasFlag(ThreadState.Aborted))
Thread.Sleep(0);
// Thread is aborted.
它的这种可能性永远不会退出循环?更好地使用'.HasFlag'来代替? – 2011-12-21 13:44:57
好点!我没有意识到ThreadState是一个Flags枚举。上面编辑。 – 2011-12-21 21:24:23
- 1. SDL_RenderPresent()不等待vsync - 如何等待?
- 2. Java。如何等待?
- 3. 如何等待File.Exists?
- 4. 如何等待$ .getJSON()?
- 5. 硒 - 如何等待?
- 6. 如何等待RequestAccessAsync?
- 7. 如何等待Vaadin循环?
- 8. 如何等待两个pthreads?
- 9. 如何等待Android中
- 10. 如何等待回复
- 11. 如何等待在迅速
- 12. 如何让WebBrowser等待Javascript?
- 13. 如何在Node.js中等待
- 14. 如何等待CCCallBlock完成?
- 15. 如何等待执行
- 16. 如何等待2秒
- 17. 如何等待在angular2
- 18. Java:我如何等待updateUI?
- 19. 如何取消等待SerialPort.BaseStream.ReadAsync?
- 20. 如何强制webdriver等待
- 21. Chrome content_script:如何等待jQuery
- 22. 如何等待SwingWorker完成?
- 23. 如何让JS等待...?
- 24. chrome ... addListener,如何等待chrome.storage.sync.get?
- 25. 如何等待派遣?
- 26. 如何等待AJAX响应
- 27. 如何等待完成dataTaskWithRequest?
- 28. 如何等待webelement消失?
- 29. 如何等待IAsyncAction方法?
- 30. 如何等待sendBroadcast完成
@HansPassant - 确定您可以 - 您可以启动另一个线程来执行等待,然后调用Abort()。 – 2011-12-21 01:12:44
@MartinJames:我以为。但我把它作为我列表中的最后一个解决方案.. – 2011-12-21 01:16:03
我写它并将其作为当前解决方案粘贴到此处。 – 2011-12-21 01:19:01