我的代码中有另一个线程嵌套的线程。在我的结束活动中,我使用upperThread.Abort()
来关闭面线程。但是,我的代码被挂断了。我相信这是因为我的lowerThread()
仍然在运行。如何关闭下层(嵌套)线程以正确关闭应用程序?
答案 0 :(得分:0)
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的更多信息。
答案 1 :(得分:0)
Inside upper thread you can catch ThreadAbortException
. It is thrown when thread is aborted. Then in catch statement you can abort your inner thread