BitmapCacheOption.OnLoad仅显示白色图像

时间:2016-11-21 15:01:25

标签: c# wpf image bitmapimage

我使用以下代码加载图像(一次在多个窗口中):

BitmapImage tempBitmapImage = new BitmapImage();
tempBitmapImage.BeginInit();
tempBitmapImage.UriSource = new Uri(_fileList[_fileCounter].FileName);
tempBitmapImage.CacheOption = BitmapCacheOption.Default; //.OnLoad;
tempBitmapImage.EndInit();
tempImage.Source = tempBitmapImage;

如果我使用默认选项,则会显示图像,但是当多个窗口尝试加载文件时,应用程序可能会崩溃,然后由后台运行的更新程序删除该文件。如果我使用OnLoad选项,当我将图像从一个图像更改为另一个图像时,该文件应该完全在内存中。但是当我这样做时,只有白色图像,没有错误信息,没有颜色,只有白色屏幕。

有人知道那可能是什么?

1 个答案:

答案 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;