我知道 Exitthread 只能从 Thread 内部调用,而 Abort 可以随时随地使用,只要您可以访问 Thread 对象。但是当您需要强制关闭线程时,这两种方法(操作方面)之间是否存在其他显着差异?
问问题
2994 次
1 回答
6
是的,一点没错。
Thread.Abort()
导致可怕的,难以发现的错误,ExitThread()
但不会。
调用Thread.Abort()
会导致线程内抛出异常,这可能会导致各种悲伤。
当然,也ExitThread()
只适用于运行消息循环的线程。
另请注意,调用后的代码ExitThread()
仍将执行,尽管 UI 调用如MessageBox.Show()
不会执行任何操作:
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");
}
如果您想以受控方式退出线程,则需要通过编写代码来积极支持它。
这是一篇很好的微软文章:http: //msdn.microsoft.com/en-us/library/dd997364.aspx
于 2013-06-04T08:30:36.990 回答