C# マルチスレッドにおける例外処理
下記のようなデリゲートを利用したマルチスレッドのプログラムを組みました。
しかし、マルチスレッド内で例外がおきても、正常にプログラムが終了してしまいます。
(try-catchでも例外を捕捉できません)
マルチスレッドプログラムにおいて、例外を捕捉するにはどうすれば、いいのでしょうか?
using System;
using System.Threading;
class Class1
{
delegate void delg();
public static void Main()
{
delg d = new delg(multi);
d.BeginInvoke(new AsyncCallback(call), null); //マルチスレッド開始
System.Threading.Thread.Sleep(500);
//マルチスレッドで例外を強制的に投げているので、
//ここまでたどり着く前にアプリケーションが落ちるはず。
//しかし、実際には正常終了。
Console.WriteLine("メインメソッド 正常終了");
}
public static void multi()
{
Console.WriteLine("マルチスレッドで実行中");
throw new Exception(); //例外を強制的に投げる。
}
public static void call(IAsyncResult ar)
{
Console.WriteLine("コールバックメソッド実行");
}
}
お礼
ありがとうございました。