私のRunWorkerCompleted
ハンドラ内のDoWork
ハンドラ内で発生する例外を処理したいのですが、コードがデバッガで実行されている間、最初に "Exeption was unhandled by user code"が発生します。BackgroundWorkerのDoWorkハンドラからスローされた例外を処理する方法は?
コードのここでは簡単な例私が使用しています:私は間違って何をやっている
BackgroundWorker _worker;
public void Test()
{
_worker = new BackgroundWorker();
_worker.WorkerReportsProgress = false;
_worker.WorkerSupportsCancellation = false;
_worker.DoWork += new DoWorkEventHandler(bw_DoWork);
_worker.RunWorkerCompleted += new
RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
_worker.RunWorkerAsync();
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
e.Result = ActuallWorkHere();
}
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
var t = e.Error;
}
private IEnumerable<string> ActuallWorkHere()
{
throw new Exception("test");
// "Exeption was unhandled by user code" if called
string[] res = { "test" };
return res;
}
?あなたは本当に何も悪いことをやっていない
正確に例外はありますか?私はあなたのコードで一回の試行を見たことはありません! – banging
"exeptiong first"は "first chance exception"を読みます。これは正常ですが、例外はDoWorkを呼び出すコードによって捕捉されます。あなたがRunWorkerCompletedでそれをどうするのかはあなた次第です。たとえば、if(e.Error!= null)throw e.Error;と書くことができます。 –