我试图在我的WPF
应用程序中加载大约20张图片。只有第一张图像完全加载。其他图像部分加载。当我使用断点进行调试时,我试图在2秒后加载每个图像并且运行良好。
代码
将加载图片,
foreach (string path in ImagesCollection)
{
DisplayImage = LoadImage(path);
}
加载图像方法,
MemoryStream mem;
if (!string.IsNullOrEmpty(path) && (File.Exists(path)))
{
FileInfo ImageFile = new FileInfo(path);
ImageFile.Refresh();
if (mem != null)
{
mem.Dispose();
}
using (var stream = ImageFile.OpenRead())
{
mem = new MemoryStream();
stream.CopyTo(mem);
}
mem.Position = 0;
ImageFrame = BitmapFrame.Create(mem);
}
截图:
我相信Dispose
或新实例会导致图片无法加载。请帮助。
答案 0 :(得分:1)
BitmapFrame.Create
状态的文档“只有在使用OnLoad缓存选项时,才能在创建帧后关闭bitmapStream。默认的OnDemand缓存选项会保留流,直到需要该帧”
这意味着一旦将MemoryStream传递给BitmapFrame,就无法重新使用它。这是错误的来源。
为了提高效率,只需传递FileStream即可。 加载图像方法
if (!string.IsNullOrEmpty(path) && (File.Exists(path)))
{
var stream = ImageFile.OpenRead())
ImageFrame = BitmapFrame.Create(stream);
}