我从文件流数据库中加载了一系列图像。当我最初加载它们时,内存跳动并不大。但是当我将它们显示在屏幕上时,内存使用量会急剧增加,即使我处理了BitmapImage streamsource并将其设置为Nothing后内存仍然不会释放。
Dim newItem As New MIdentifiedImage
Dim data As Byte() = dt.Rows(i).Item("ScannedImage")
Dim strm As New MemoryStream(data)
Dim bi As New BitmapImage()
bi.BeginInit()
bi.StreamSource = strm
bi.EndInit()
bi.Freeze()
newItem.ScannedImage = bi
这是我的dispose代码:
For Each img In InvoiceObj.ImageList
img.ScannedImage.StreamSource.Dispose()
img.ScannedImage.StreamSource = Nothing
Next
我的性能分析器显示内存使用率很低,但是当我在任务管理器中检查时,内存使用率却相当高。如果我继续加载图像,超过1.5GB的内存,它就停止在屏幕上显示图片。
bi.CacheOption = BitmapCacheOption.OnLoad
设置为true,则可以立即释放流,例如在此处所示[https://dev59.com/rXfZa4cB1Zd3GeqPXuyG#19347459]。 - Clemens