Thread.Abort() vs Application.Exitthread()
本文关键字:Exitthread Application vs Thread Abort | 更新日期: 2023-09-27 18:16:44
我知道Exitthread只能从线程内部调用,而Abort可以在任何时间任何地点使用,只要您可以访问线程对象。但是,当您需要强制关闭线程时,这两种方法(操作方面)之间是否存在其他显著差异?
绝对可以。
Thread.Abort()
会导致可怕的、难以发现的bug,而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");
}
如果你想以一种受控的方式退出线程,你需要通过编写代码来积极地支持它。
这里有一篇很好的微软文章:http://msdn.microsoft.com/en-us/library/dd997364.aspx