1

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

4

2 回答 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 的更多信息。

于 2017-03-16T12:16:13.733 回答
0

里面的面线你可以抓住ThreadAbortException。它在线程中止时抛出。然后在 catch 语句中你可以中止你的内线程

于 2018-12-19T11:21:52.447 回答