1
我有大型樹視圖充滿了文本框,每個都帶有包含獨特圖像的工具提示。圖像以字節陣列的形式存儲在屬性中,並與之綁定。每次顯示新的工具提示時都會使用更多的內存。如何通過綁定到bytearray來顯示圖像時防止內存泄漏?
我將縮放圖像,但這並沒有解決問題的根源。如果在工具提示不再顯示之後有辦法釋放使用的內存嗎?
<TextBlock.ToolTip>
<StackPanel>
<Image MaxWidth="650"
MaxHeight="400"
Source="{Binding ImageAsByteArray}"/>
<TextBlock Text="{Binding FilePath, StringFormat='Full Path: {0}'}" />
</StackPanel>
</TextBlock.ToolTip>
你測試過了嗎?當我這樣做時,我無法釋放內存。我綁定到XAML中的bytearray,捕獲正在卸載的畫布的事件,併成功將該子項投射到一個圖像。將源設置爲null不會釋放內存。我也嘗試BindingOperations.ClearBinding沒有運氣。 – Brandon
一旦垃圾收集發生後,你確定一分鐘後內存不會釋放嗎?您可以使用內存分析器來證明這一點 - 或者(僅適用於diags)強制GC.Collect操作來證明它是否釋放內存... –
對於測試,我在設置圖像源後強制GC.Collect爲空。隨着更多工具提示的打開/關閉,內存使用量繼續攀升。 – Brandon