【发布时间】:2013-10-14 16:32:57
【问题描述】:
我已经从文件流数据库中加载了一个图像列表。当我最初加载它们时,内存跳跃并没有那么大。当我在屏幕上显示它们时,我的内存使用量会激增并且即使在我处理掉 BitmapImage 流源并将其设置为 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
这是我的处置代码
For Each img In InvoiceObj.ImageList
img.ScannedImage.StreamSource.Dispose()
img.ScannedImage.StreamSource = Nothing
Next
所以我的分析器说内存使用率很低,但是当我检查我的任务管理器时,内存使用率很高。如果我继续加载超过 1.5GB 内存的图像,它只会停止在屏幕上显示图像。
【问题讨论】:
-
除了 Reed 所说的,如果你在调用 EndInit 之前设置了
bi.CacheOption = BitmapCacheOption.OnLoad,你可以立即处理流,如图所示。 here.
标签: wpf filestream idisposable