如何关闭嵌套在线程内的线程?
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()自定义线程池(代码片段