2010-04-01 63 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