Thread.Abort()vs Application.Exitthread()

时间:2013-06-04 08:27:04

标签: c# thread-abort

我知道只能在Thread中调用Exitthread,只要你可以访问Thread对象,就可以随时随地使用Abort。但是当你需要强制关闭一个Thread时,这两个方法(操作方式)之间是否存在其他显着差异?

1 个答案:

答案 0 :(得分:6)

是绝对的。

Thread.Abort()导致可怕的,难以发现的错误,而ExitThread()则没有。

调用Thread.Abort()会导致在线程中抛出异常,这可能会导致各种各样的悲伤。

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

另请注意,调用ExitThread()后的代码仍会执行,但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