簡體   English   中英

在Windows Mobile應用程序中使用UnhandledException的問題

[英]Problem using UnhandledException in Windows Mobile app

我有一個Windows Mobile程序,該程序通過第三方DLL訪問連接的設備。 對設備的每次調用都可能花費未知的時間長度,因此每個調用都包含超時屬性。 如果調用花費的時間比指定的超時時間長,則DLL會引發一個異常,我的應用程序可以毫無問題地捕獲該異常。

我的問題是關閉應用程序。 如果我的應用程序已調用DLL並等待超時發生,然后在超時發生前關閉了該應用程序,則我的應用程序將鎖定並要求重新啟動PDA。

在正常情況下,我可以確保應用程序在關閉之前等待超時。 但是,我試圖使用AppDomain.CurrentDomain.UnhandledException捕獲程序中任何未處理的異常,並使用事件等待此掛起的超時發生,以便最終關閉程序。

我的問題是此事件似乎持續的時間不夠長。 如果我放入MessageBox.Show("unhandled exception"); 行,然后從應用程序的主窗體中引發新的未處理的異常,我看到消息框有一秒鍾,但隨后消失了,而無需單擊“確定”按鈕。

我在此事件中發現的文檔表明,到調用它的時候,應用程序已完全致力於關閉,並且無法停止關閉,但我不認為這意味着事件方法本身不會完成。 產生了什么(我想這就是問題)?

更新:在完整窗口(Vista)中,此功能按預期工作,但僅當我使用Application.ThreadException事件時,該事件在.Net CF 2.0中不存在。

我也遇到了這個問題。 這是.NET CF(v2.0)中的一個已知問題,但是我在使用v3.5時也遇到了此問題(盡管發生這種情況的情況更加具體)。 您可以在此處找到(舊的且仍處於活動狀態)錯誤報告。

調用MessageBox.Show()使它立即關閉,但是在我的情況下,有兩種解決方法:1)第二次調用MessageBox.Show()。 然后它會阻塞直到被用戶關閉。 您可以通過檢查DialogResult來提前關閉第一個MessageBox.Show()。 我不記得它在失敗時准確返回了哪個結果,我記得它給出了非默認結果。

2)創建一個自定義窗體,並在其上調用ShowDialog()。 它對我有用,但是其他人報告它不起作用。 您還可以調用Show()並使其阻塞自己(別忘了調用Application.DoEvents()以便它繼續處理事件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM