2011-07-30 57 views
7

我的程序有一個奇怪的問題。我正在開發一個Windows窗體應用程序。當我通過Visual Studio(F5)進行調試時,它的工作原理完全正確,但是當我運行它的可執行文件時,它崩潰並給我「在mscorlib.dll中發生類型'System.ObjectDisposedException'的未處理異常」。程序崩潰與System.ObjectDisposedException

我試圖把一個頂級(在我最外面的函數)try/catch捕獲這個異常,但仍然程序崩潰。我在這裏錯過了什麼?

我沒有上傳代碼,因爲我必須上傳整個代碼才能看到問題出在哪裏。

+1

問題是,調試時GC不收集經常處理的對象。您的代碼中的某處嘗試訪問不再有有效引用的對象。它已被處置。沒有一些代碼就不可能確切地說。 –

+2

如果他試圖訪問它,顯然他必須有一個參考,因此沒有GC。 –

回答

3

哇,一個ObjectDisposedException不被頂級catch塊捕獲嗎?

我不知道我會在這種情況下做什麼 - 顯然,你想看到堆棧跟蹤,並找出它是什麼被處置。有幾個不可捕捉的例外,但這不是其中之一。我可能會附加一個處理程序到AppDomain.UnhandledException事件,並查看是否有任何發現。

3

如果您可以獲取異常的堆棧跟蹤,它應該可以幫助您調試根本原因。您可能會發現Call Stack窗口對此很有幫助。查看這裏的說明:

您可能還希望在Visual Studio中禁用「Just My Code」選項進行調試。這可能會給你更好的異常調試信息。按照說明(以禁用)位置:

+0

更新後的鏈接:[如何:跳入我的代碼](https://msdn.microsoft.com/en-us/library/h5e30exc(v = vs.100).aspx) – OriolBG