我知道 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/