6

本「Windowsでの並行プログラミング」から次のコードを取得しました。

void Main()
{
    try
    {
        try
        {
            Console.WriteLine("Inside Main Method");
            Thread.CurrentThread.Abort();
        }
        catch(ThreadAbortException)
        {
            Console.WriteLine("Inside First Catch");
            // Trying to swallow but CLR throws it again....
        }
    }
    catch(ThreadAbortException)
    {
        Console.WriteLine("Inside Second Catch");
        //Thread.ResetAbort();
    }
}

CLR が ThreadAbortException を再スローする理由を知ることに興味がありますか? そして、「Thread.ResetAbort()」を呼び出すまでそれを続けます。第二に、 CLR から特別な扱いを受ける他のシステム定義の例外はありますか?

4

2 に答える 2

3

これは特別な例外です。 http://msdn.microsoft.com/en-us/library/system.threading.threadabortexception.aspx、備考を参照してください。私の理解では、これが発生する理由は、スレッドが閉じる前に.Netがクリーンアップ作業を実行できるようになっているためです。

配管については、http: //ondotnet.com/pub/a/dotnet/2003/02/18/threadabort.htmlを参照してください。

于 2011-11-23T06:09:18.720 に答える