我已经从filestream数据库中加载了一个图像列表。当我最初加载它们时,内存跳转没有那么大。当我在屏幕上显示它们时,我的内存使用量就会激增,即使在我丢弃BitmapImage流源并将其设置为空之后,内存使用量也不会消失。
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这是我的处理代码
For Each img In InvoiceObj.ImageList
img.ScannedImage.StreamSource.Dispose()
img.ScannedImage.StreamSource = Nothing
Next所以我的分析器说内存使用率很低,但是当我签入任务管理器时,内存使用率相当高。如果我继续加载超过1.5GB内存的图像,它就会停止在屏幕上显示图像。
发布于 2013-10-14 16:41:37
您也需要清除ImageList。仅仅将StreamSource设置为null并不会导致它删除已经加载的数据。通过在完成ImageList时清除它,还允许GC清理实际的BitmapImage实例。
https://stackoverflow.com/questions/19364881
复制相似问题