2010-04-01 62 views
1

我遇到的问题是出于某种原因ShowDialog在处理异常后立即返回。但是,它适用于MessageBox.Show()或第二次调用ShowDialog。这个问题最好的解决方法是什么?我只能找到this。我不相信没有其他人有这个问题。ShowDialog在.net压缩框架中处理的异常后立即返回

我正在使用.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 
    } 
} 
+0

在SomeOtherForm中编写一个FormClosing事件处理程序,在它上面设置一个断点并发布它在断开时看到的堆栈跟踪。 – 2010-04-01 13:29:02

+0

不幸的是,关闭事件不会被调用。 – leiz 2010-04-01 22:20:10

回答

1

我刚才已经回答在another question下,我认为这是关系到同样的问题。虽然在你的情况2)可能无法工作(除非手动阻塞线程)。

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

调用MessageBox.Show()它会导致 立即关闭,但对我来说 有两种解决方法:

1)调用 的MessageBox.Show()第二次。 然后,它会阻止,直到用户关闭 。您可以通过检查DialogResult来检查第一个 MessageBox.Show()过早关闭 。我不记得 记得哪个结果恰好在失败时返回 ,我记得它 给出了非默认结果。

2)创建一个自定义窗体并调用 ShowDialog()。它适用于 我,但其他人报告它 不起作用。您也可以拨打 Show()并使其自行屏蔽 (不要忘记呼叫 Application.DoEvents(),以便它保持 处理事件)。

+0

上周,我找到了解决问题的答案。 http://stackoverflow.com/questions/724644/windowsmobile-application-exits-after-handling-exception-from-dialogform – leiz 2010-04-20 11:46:07