【发布时间】:2013-05-30 13:34:57
【问题描述】:
我知道 Exitthread 只能从 Thread 内部调用,而 Abort 可以随时随地使用,只要您可以访问 Thread 对象。但是当您需要强制关闭线程时,这两种方法(操作方面)之间是否存在其他显着差异?
【问题讨论】:
标签: c# thread-abort
我知道 Exitthread 只能从 Thread 内部调用,而 Abort 可以随时随地使用,只要您可以访问 Thread 对象。但是当您需要强制关闭线程时,这两种方法(操作方面)之间是否存在其他显着差异?
【问题讨论】:
标签: c# thread-abort
绝对是的。
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
【讨论】: