2013-02-07 46 views
1

我的目標是通過一些複雜的管路輸送,在它的某些部分,我沒有代碼,我需要知道什麼是地點時Dispose叫我Bitmap如何知道誰在處理我的Bitmap對象或它已被處置?

+0

它是否被處置?如果它在某個第三方庫中很深,你無法知道它在哪裏。 –

+0

我有其他庫的pdb,並沒有被混淆!我需要知道函數名稱,至少在處理被調用的地方。 –

+1

pdp's或pdb's? –

回答

3

您可以從斷點窗口System.Drawing.Image.Dispose添加一個斷點。然後調試器將在調用Image.Dispose時停止,您可以從Call Stack窗口查看它的調用位置。

不要忘記關閉調試>常規>啓用僅我的代碼。

+0

非常感謝,它非常完美! –

0

你不能對位圖類進行任何操作,例如inherit它,然後在處置時引發一個事件,以便捕獲該對象所處的特定點。

但是你應該知道,如果你正確使用一次性對象調用Dispose。

using(Bitmap b = new Bitmap("")) 
{ 
    //Do some stuff with B 
//Dispose is handled on end of using 
} 

或者你打電話給Dispose()本身。

Bitmap b = new Bitmap(""); 
//Do some stuff with b 
b.Dispose(); 

你最好把你的代碼放在你知道一個對象正在處理的地方。步入System.Drawing.Image對象將有助於識別它,但除了dispose方法以外,您無法執行其他任何操作。

+0

我知道處理事情肯定,但我需要知道的地方被稱爲,我正在嘗試@idursun解決方案,我認爲它會解決它! –

+1

是的,我已經在上面解釋過這些是Dispose不可避免被調用的兩個方面。進入該方法只會強制執行該方法。 – LukeHennerley

相關問題