[英]c# - ThreadAbortException rethrowing
MSDN說,對於Thread.Abort
方法 -
在線程上調用此方法時,系統會在線程中拋出ThreadAbortException以中止它。 ThreadAbortException是一個特殊的異常,可以被應用程序代碼捕獲,但是在catch塊的末尾重新拋出,除非調用ResetAbort。 ResetAbort取消中止請求,並阻止ThreadAbortException終止線程。 在線程中止之前執行未執行的finally塊。
那么異常只會從最直接的catch
塊或者所有封裝的catch
塊中拋出一次? 此外,當執行未執行的finally
塊時,它是否包括完全未執行和部分執行的塊?
如果它們正在執行,並且如果它們需要在堆棧的回滾期間執行,那么finally
塊總是完全受到ThreadAbortException
保護。
是的,顯然ThreadAbortException
將在攔截它的同一個線程中的任何try... catch
塊的末尾自動重新引發,否則它將毫無意義。 只有兩個“生命”的ThreadAbortException
有什么用?
這可能會阻止ThreadAbortException
嗎?
try
{
try
{
// The Thread.Abort "happens" here
Thread.Sleep(Timeout.Infinite);
}
catch
{
}
}
catch
{
}
雖然這不會?
try
{
// The Thread.Abort "happens" here
Thread.Sleep(Timeout.Infinite);
}
catch
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.