我有一个线程嵌套在我的代码中的另一个线程中。在我的闭幕活动中,我使用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语句中,您可以中止内部线程