我目前正在开发一款应用程序,它可以从隔离存储中加载和上传一些图片,也可以通过Streams从Web服务(RESTFul)上传。图片本身并不大(500kb - 每个流2MB)。但经过几次,总是不同的操作(例如显示或下载图片列表),我得到outOfMemory异常。 我也确定,在每种情况下,流都正确关闭。
using (MemoryTributary mem = new MemoryTributary(imageBytes))
{
bitmapImage.SetSource(mem);
bitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
mem.Close();
}
在这个特殊情况下,我们还使用了可下载的类MemoryTributary,它应该能够比memoryStreams更好地处理大数据。
http://www.codeproject.com/Articles/348590/A-replacement-for-MemoryStream
不知怎的,我认为使用它们后,尽管Streams已关闭,但未释放使用过的资源。
答案 0 :(得分:0)
好的,我们现在得到了它。 UriSource也必须设置为null。此外,XAML对象的Source必须在设置null后更新,否则它会看起来保留图片,即使Source设置为null。