我知道只能在Thread中调用Exitthread,只要你可以访问Thread对象,就可以随时随地使用Abort.但是当你需要强制关闭一个线程时,这两个方法(操作方式)之间是否存在其他显着差异?
是的,一点没错.
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");
}
Run Code Online (Sandbox Code Playgroud)
如果要以受控方式退出线程,则需要通过编写代码来主动支持它.
这是一篇很好的微软文章:http://msdn.microsoft.com/en-us/library/dd997364.aspx