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

时间:2013-02-08 20:23:27

标签: c# multithreading nested abort

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

2 个答案:

答案 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