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

问题描述 投票:1回答:2

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

c# multithreading nested abort
2个回答
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上阅读有关ThreadAbortException的更多信息。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.