如何关闭嵌套在线程内的线程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何关闭嵌套在线程内的线程?相关的知识,希望对你有一定的参考价值。

我有一个线程嵌套在我的代码中的另一个线程中。在我的闭幕活动中,我使用upperThread.Abort()来关闭面线。但是,我的代码被挂断了。我相信这是因为我的lowerThread()仍在运行。如何关闭较低(嵌套)线程以正确关闭应用程序?

答案

不建议使用Thread.Abort(),但在极少数情况下可能仍然需要使用var parent = new Thread(new ThreadStart(() => { Thread child = null; try { child = new Thread(new ThreadStart(() => { // do stuff })); child.Start(); } catch (ThreadAbortException) { if (child != null && child.IsAlive) { // Abort child when parent is aborted child.Abort(); } } })); parent.Start(); parent.Abort();

这是一个简单的例子:

MSDN

ThreadAbortException上阅读有关ThreadAbortException的更多信息。

另一答案

在面线内,你可以抓住qazxswpoi。线程中止时抛出它。然后在catch语句中,您可以中止内部线程

以上是关于如何关闭嵌套在线程内的线程?的主要内容,如果未能解决你的问题,请参考以下文章

线程学习知识点总结

如何在嵌套片段内的两个子片段之间进行通信

在 C# 中,我应该如何关闭正在运行的线程(Access DB)?

如何从片段内的列表视图打开链接网址?

newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段

嵌套线程中断计时器[重复]