當通過Thread.Abort()取消某個線程時,會在Thread Thread.Abort內部引發一個ThreadAbortException。這導致線程立即停止工作,異常冒出了調用堆棧,直到它離開線程的主要方法。這會導致線程中止。Thread.ResetAbort的優點
ThreadHeader對於線程主方法中的ThreadAbortException異常,Thread.ResetAbort()被調用時,當線程在catch塊之後由於跳出其主方法而自行終止時,有什麼好處?
private void ThreadMainMethod()
{
try
{
while(runningAllowed = true)
{
//Do some work here
}
}
catch (ThreadAbortException)
{
Thread.ResetAbort();
}
}
這正是我的意思。我只是想澄清一下,因爲我現在正在查看一段代碼,上面的語句遍佈全球。 – PVitt 2009-08-27 07:58:13
下面是使用它的好地方:https://stackoverflow.com/questions/299198/implement-c-sharp-generic-timeout/299273#299273 – TheSoftwareJedi 2017-08-22 22:00:37