在.net紧凑框架中处理异常后,ShowDialog立即返回

时间:2010-04-01 09:58:39

标签: c# windows-mobile compact-framework

我遇到的问题是由于某种原因ShowDialog在处理异常后立即返回。但是,它适用于MessageBox.Show()或第二次调用ShowDialog。这个问题的最佳解决方法是什么?

我只能找到this。我无法相信没有其他人有这个问题。

我正在使用.net compact framework 3.5。示例代码:

try
{
  using(SomeForm f = new SomeForm())
  {
    f.ShowDialog();
  }
}
catch(SomeException)
{
  using(SomeOtherForm f = new SomeOtherForm())
  {
    f.ShowDialog(); // this returns immediately
                    // if this is MessageBox.Show(), it works correctly.
    f.ShowDialog(); // then this works fine
  }
}

1 个答案:

答案 0 :(得分:1)

我刚才在another question中回答了以下内容,我认为这与同一问题有关。虽然在你的情况下2)可能不起作用(除非手动阻止线程)。

  

我也遇到过这个问题。   这是.NET CF中的已知问题   (v2.0),但我在使用时也有   v3.5(虽然在哪种情况下   它发生的更具体)。您可以   找到(旧的,仍然活跃的)错误   在这报告。

     

调用MessageBox.Show()会导致它   立即关闭,但在我的情况下   有两种解决方法:

     

1)致电   MessageBox.Show()第二次。   它然后阻止直到关闭   用户。你可以先检查一下   MessageBox.Show()过早关闭   通过检查DialogResult。我不   记住它返回的结果   确切地说,当它失败时,我记得它   给出非默认结果。

     

2)创建自定义表单并调用   ShowDialog()就是这样。它起作用了   我,但其他人报告了它   不起作用。你也可以打电话   显示()并使其自行阻止   (别忘了打电话   Application.DoEvents()所以它保持不变   处理事件)。