我使用以下代码加载图像(一次在多个窗口中):
BitmapImage tempBitmapImage = new BitmapImage();
tempBitmapImage.BeginInit();
tempBitmapImage.UriSource = new Uri(_fileList[_fileCounter].FileName);
tempBitmapImage.CacheOption = BitmapCacheOption.Default; //.OnLoad;
tempBitmapImage.EndInit();
tempImage.Source = tempBitmapImage;
如果我使用默认选项,则会显示图像,但是当多个窗口尝试加载文件时,应用程序可能会崩溃,然后由后台运行的更新程序删除该文件。如果我使用OnLoad选项,当我将图像从一个图像更改为另一个图像时,该文件应该完全在内存中。但是当我这样做时,只有白色图像,没有错误信息,没有颜色,只有白色屏幕。
有人知道那可能是什么?
答案 0 :(得分:0)
您可以直接从FileStream加载BitmapImage:
var tempBitmapImage = new BitmapImage();
using (var stream = new FileStream(
_fileList[_fileCounter].FileName, FileMode.Open, FileAccess.Read))
{
tempBitmapImage.BeginInit();
tempBitmapImage.CacheOption = BitmapCacheOption.OnLoad;
tempBitmapImage.StreamSource = stream;
tempBitmapImage.EndInit();
}
tempImage.Source = tempBitmapImage;