我有以下简单场景:
一个带有 Button 的 DialogForm,Button_click 抛出异常。
带有按钮和标签的 MainForm,在单击时我在 Catch block 中显示 DialogForm 的新实例。
如果我在常规 WinForms 中运行此设置,我可以按预期捕获异常。
如果我在 WinMobile 中运行它(我已经在 WM5 和 WM6 Pro 上测试过),我可以使用调试器看到 Catch block 已输入 但异常继续向上传播 并且应用程序死掉了。
MainForm 中的代码如下所示:
try
{
using (DialogForm frm = new DialogForm())
{
DialogResult r = frm.ShowDialog();
label1.Text = r.ToString();
}
}
catch (Exception ex)
{
label1.Text = ex.Message;
}
编辑:
我进一步调查了一下,在这段代码和 Application.Run() 周围使用了一个 catch {} block ,应用程序仍然退出。
显然它不是失控的异常,它被捕获并处理得很好。但在此操作之后,应用程序似乎执行了不需要的 Exit()。
最佳答案
在修补之后我发现了一些有用的东西:
try {
// show Dialog that Throws
}
catch (Exception ex) {
label1.Text = ex.Message;
Application.DoEvents(); // this solves it
}
赏金仍然开放给任何可以告诉我 为什么 DoEvents() 是必要的人。
关于c# - Windows 手机 : Application Exits after handling Exception from DialogForm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/724644/