DOBON.NET DOBON.NETプログラミング掲示板過去ログ

マルチスレッドでの例外処理について

環境/言語:[WindowsXP、Visual Studio2005(C#)]
分類:[.NET]

こんにちわ。はじめて投稿させて頂きます。
今、Windowsフォームでマルチスレッドのプログラムを作成しています。
別スレッドで処理している中で、例外処理が発生した場合にメインスレッドに
例外をスローしてメインスレッドでエラー内容を表示したいと考えています。

下記サンプルをデバッガから起動すると、SampleFunc関数のthrowから先に
進まなくなります。(throwが何回も呼ばれる)
EXEファイルを実行して処理を行なうと、「問題が発生したため・・・」の
Windowsが出力するメッセージが表示され、強制終了します。

良い解決方法は無いでしょうか。
よろしくお願いします。

======================== 以下サンプルコード ========================

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        Thread smpThread = new Thread(new ThreadStart(SampleFunc));
        smpThread.Start();
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

private void SampleFunc()
{
    try
    {
        //例外を発生させる
        int intVal1 = 10;
        int intVal2 = 0;
        int intRet = intVal1 / intVal2;
    }
    catch
    {
        throw;
    }
}
■No22026に返信(DAIGOさんの記事)
> こんにちわ。はじめて投稿させて頂きます。
> 今、Windowsフォームでマルチスレッドのプログラムを作成しています。
> 別スレッドで処理している中で、例外処理が発生した場合にメインスレッドに
> 例外をスローしてメインスレッドでエラー内容を表示したいと考えています。
何か参考になりそうなページ:
http://d.hatena.ne.jp/akiramei/20060126/p1
http://okwave.jp/qa1657726.html?ans_count_asc=1
http://vsug.jp/tabid/63/forumid/51/postid/4384/scope/posts/Default.aspx

DOBON.NET | プログラミング道 | プログラミング掲示板