2012-02-09 19 views
-1

言語:C#スレッド内の例外を処理できませんでした

私は長い仕事をするために背景作業者を使用します。私は無視しなければならない例外が発生する。コードブロックで例外を処理すると、ブロック自体にはキャッチされません。代わりに、私はバックグラウンドワーカーの仕事を呼び寄せた。

問題の状況

Backgroundworker1_dowork() 
    { 
     try 
     { 
     fun1(); 
     } 
     catch(Exception e) 
     { 
     console.writeline("bg block"); 
     } 
    } 
    void fun1() 
    { 
    try 
     { 
      throw new exception("ex1"); 
     } 
    catch(Exception ex) 
     { 
      Console.writeline("code block"); 
     } 
    } 

    output: bg block Expected: code block 

は、いずれかが私を助けることができる...

+2

どのようなコードがこの動作を生成しているのかわかりません... –

+1

例コードを投稿してください。 –

+0

fun1()を実行する前にBackgroundworker1_dowork()に例外がスローされ、fun1()がスキップされると思います。例外の呼び出しスタックを参照してください – evpo

答えて

0

あなたが提供するコードはコンパイルされませんので、問題を決定することは困難です。しかし、fun1の呼び出しが失敗しているか、fun1のcatchブロックが失敗しています。

fun1の試行の前にDebug.WriteLine("In fun1");を入れます。これが出力に表示されない場合、fun1の呼び出しが失敗していることがわかります。この出力が表示された場合、catchブロックが失敗していることがわかります。

関連する問題