我一直在尝试遵循这个 MSDN示例,并使用下面的代码。但是,e.Error
即使在 SomeMethod() 中确实发生错误,RunWorkerCompleted 中也始终为 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
}
此外,使用第二种方法我无法从 e.Result 访问 .Message。例如,在 WorkerDoWork 我可以使用ex.Message
编辑:我已经设置了工人来创建它自己的错误,但我仍然得到 e.Error == null。显示的变量有点微弱,因为 CTRL+PrtSc 使其消失