Я работаю над проектом Tiff Viewer, который имеет дело с большими 24-битными TIF-файлами (> 70 МБ). Вот код, как я загружаю файл TIF:tiff viewer приложение wpf из памяти
TiffBitmapDecoder tbd = new TiffBitmapDecoder(new Uri(_strTiffPath),BitmapCreateOptions.DelayCreation, BitmapCacheOption.Default);
_frames = tbd.Frames;
я использую вариант кэша по умолчанию, чтобы предотвратить загрузку всего файла в память.
Мое приложение имеет вид миниатюр (вертикальный StackPanel с изображением) и вид страницы, который отображает выбранный эскиз.
загружает только видимые миниатюры с помощью этого кода:
internal static BitmapSource GetThumbAt(int i)
{
try
{
if (i >= _frames.Count)
return null;
BitmapFrame bf = _frames[i];
bf.Freeze();
return bf;
}
catch (Exception ex)
{
return null;
}
}
Моей проблемы когда я прокручиваю вниз эскизы просмотр, чтобы загрузить новые видимые страницы, увеличивается нагрузка на память и я бег в из памяти!
Я попытался выгрузить невидимые страницы (которые уже были загружены), но это не поможет!
img.Source = null
Спасибо, что помогли мне разобраться в этом.
Я нашел статью [здесь] (http://code.logos.com/blog/2010/08/tracking_bitmapsource_memory_usage.html) говорить об этой проблеме, но я не знаю, как адаптировать его к своему собственному коду. Есть идеи ? – hsnslh