2016-10-05 11 views
-2

trygroundでワーカークラスを使用してtry catchステートメント内のメソッドを呼び出すときにtry catchステートメントがメソッドに含まれている場合、例外をキャッチしますか?例外が検出された場所はどこですか? (try/catch)

private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) 
{ 
    try 
    { 
     Do(); 
    } 
    catch (Exception ex) 
    { 
     System.Windows.MessageBox.Show("Error:" + e.Result + ex.Message); 
    } 
} 

そして:

private void Do() 
{ 
    try 
    { 
     //Do something, open a file etc. 
     FileStream fs = new FileStream("file.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
    } 
    catch (Exception e) 
    { 
     System.Windows.MessageBox.Show("Error:" + e.Result + ex.Message); 
    } 
} 

を使って呼び出さ:backgroundWorker1.RunWorkerAsync();

例外は、メソッド内で処理されていることを確認する方法はありますか?バックグラウンドワーカーは壊れませんか?

private void Do() 
{ 
    try 
    { 
     //Do something, open a file etc. 
     FileStream fs = new FileStream("file.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
    } 
    catch (Exception e) 
    { 
     System.Windows.MessageBox.Show("Error:" + e.Result + ex.Message); 
    } 
} 
+0

例外: – Sinatr

+0

'DoWork'関数で例外が処理されていない場合、それは引数の一部として' RunWorkerCompleted'関数に渡されます。 [この関連する質問](http://stackoverflow.com/questions/258662/unhandled-exceptions-in-backgroundworker)を参照してください。 –

+1

ブレークポイントを設定するか、ログに何かを追加して書き出しを確認します。どちらかというと、数秒しかかかりませんでした。 – Servy

答えて

1

内側の1本キャッチは "エラー"

これに "近い" であることから

? * "バックグラウンド労働者が壊れない" * - あなたは上記のコードに何らかの問題があることを示しています。
関連する問題