簡體   English   中英

后台工作者事件處理

[英]Background Worker Event Handling

我一直在努力處理后台工作線程中的事件。

我遇到的所有文檔都讓我相信,當 DoWork 事件處理程序引發異常時,應該在 RunWorkerCompleted 處理程序中處理該異常,並且該異常將在 RunWorkerCompletedEventArgs 的 Error 屬性中可用。

這很好,但在調試期間,我總是看到用戶代碼消息未處理的異常。 這讓我相信我的方法有問題。

我應該采取什么步驟來解決這個問題?

問候,喬納森

我以前見過這種行為,我通過使用System.Diagnostics.DebuggerNonUserCode屬性裝飾 DoWork 處理程序來解決它:

[System.Diagnostics.DebuggerNonUserCode]
void bw_DoWork(object sender, DoWorkEventArgs e)
{ ... }

請注意,只有在調試器中運行時才能看到此信息; 即使沒有該屬性,從 shell 運行時也應如此。

我再次查看了這個,我仍然看不出你需要這樣做的任何充分理由。 我稱其為調試器錯誤功能。

我以前遇到過這個問題。 僅當您不在調試模式下運行時才會設置 e.Error。 如果您在 Debug 中運行,則執行會在異常處停止。 但是,在非調試模式下運行相同的程序(在 VS Debug -> Start without Debugging 或 Ctrl+F5 中)並且討厭的異常對話框不會出現,並且 e.Error 將是異常。 不知道為什么,但這就是它的工作原理......

你的方法是正確的。 只需在消息上按繼續並繼續。 如果有疑問,請在調試 session 之外對其進行測試。

暫無
暫無

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

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