2016-11-21 3 views
0

Я использую следующий код для загрузки изображения (в нескольких окнах одновременно):BitmapCacheOption.OnLoad показать только белое изображение

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

Вы можете напрямую загрузить BitmapImage из FileStream:

var tempBitmapImage = new BitmapImage(); 

using (var stream = new FileStream(
    _fileList[_fileCounter].FileName, FileMode.Open, FileAccess.Read, FileShare.Read)) 
{ 
    tempBitmapImage.BeginInit(); 
    tempBitmapImage.CacheOption = BitmapCacheOption.OnLoad; 
    tempBitmapImage.StreamSource = stream; 
    tempBitmapImage.EndInit(); 
} 

tempImage.Source = tempBitmapImage; 
+0

Спасибо. Я дам вам попытку и расскажу вам, что из этого вышло. –

Смежные вопросы