我知道 Exitthread 只能从 Thread 内部调用,而 Abort 可以随时随地使用,只要您可以访问 Thread 对象。但是,当您需要强制关闭线程时,这两种方法(操作方面)之间是否还有其他显着差异?

最佳答案

是的,一点没错。
Thread.Abort() 会导致可怕的、难以发现的错误,而 ExitThread() 不会。

调用 Thread.Abort() 会导致线程内部抛出异常,这会导致各种悲痛。

此外,当然,ExitThread() 仅适用于运行消息循环的线程。

还要注意,调用 ExitThread() 之后的代码仍然会被执行,尽管诸如 MessageBox.Show() 之类的 UI 调用不会做任何事情:

private void button1_Click(object sender, EventArgs e)
{
    Application.ExitThread();
    MessageBox.Show("This won't be shown because the UI is being shut down.");
    Debug.WriteLine("But this is still executed");
}

如果要以受控方式退出线程,则需要通过编写代码来积极支持它。

这是一篇关于它的好 Microsoft 文章:http://msdn.microsoft.com/en-us/library/dd997364.aspx

关于c# - Thread.Abort() 与 Application.Exitthread(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16913037/

10-12 00:41