この MSDN の例に従って、以下のコードを使用しようとしています。ただし、e.Error
RunWorkerCompleted では、SomeMethod() でエラーが発生した場合でも常に null です。
private void WorkerDoWork(object sender, DoWorkEventArgs e)
{
getMethod = SomeMethod();
}
private void Worker_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
var result = ModernDialog.ShowMessage("Error occurred.... " +
e.Result, "ErrorTitle", MessageBoxButton.OK);
}
else if (e.Cancelled)
{
}
Else
{
}
}
誰かが私が間違っていることを見ることができますか?
次のようにして回避できますが、MSDN の例がうまくいかない理由がよくわかりません。
private void WorkerDoWork(object sender, DoWorkEventArgs e)
{
try
{
getMethod = SomeMethod();
}
catch(Exception ex)
{
e.Result = ex;
}
}
private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Result is Exception)
{
var result = ModernDialog.ShowMessage("Error occurred.... " + e.Result, "ErrorTitle", MessageBoxButton.OK);
}
//etc
}
また、2 番目の方法を使用すると、e.Result から .Message にアクセスできません。たとえば、WorkerDoWork で使用できますex.Message
編集:独自のエラーを作成するようにワーカーをセットアップしましたが、それでもe.Error == nullが発生します。表示される変数は、CTRL+PrtSc でフェードするため、少しかすんでいます。