Я работаю с приложением WPF, задачей которого является отображение большого количества растровых файлов. В будущем я планирую реализовать решение с использованием векторной графики, но сейчас у меня есть эта проблема:
Чтобы минимизировать время, в течение которого мое приложение читает файлы с диска, я создал Dictionary<string, BitmapImage>
(где строка - путь к файлу изображения) для хранения наиболее часто используемых изображений. Если запрашивается изображение, которое было просмотрено недавно, программа получает его с Dictionary
, а не с диска. Однако с ростом количества просматриваемых изображений увеличивается объем оперативной памяти, используемой программой. Поэтому моя идея заключалась в том, чтобы хранить ограниченное количество изображений, и, поскольку новое загружается с диска, перезаписать самое старое из моих Dictionary
.
Как бы я поступил так, как можно лучше? Я рассмотрел использование SortedDictionary
, но не могу понять, как написать IComparer
, поскольку ни keys
, ни items
не имеют никакой информации о времени / порядке их добавления.
Будет ли разумным решение сохранить отдельный SortedDictionary<DateTime, string>
с DateTime IComparer
? Таким образом, при добавлении нового файла можно найти путь к самому старому добавленному файлу и сопоставить его с правильным изображением в моем Dictionary
. Это похоже на продвинутое решение. Какие-нибудь упущенные или встроенные решения?