Я пишу приложение Windows Phone 7, которое имеет дело с большим количеством изображений. Эти изображения могут варьироваться от нескольких сотен пикселей до 1080P (потенциально выше в будущем).
Изображения очень ресурсоемкие, поэтому я пошел по пути кэширования + изменения размера изображений на телефоне перед их отображением.
Это означает, что при первой настройке после ввода пользователем IP-адреса хранилища изображений я могу попросить их подождать несколько минут, пока все они будут восстановлены/изменены/кэшированы. С этого момента они могут иметь приятную и быструю работу.
В настоящий момент менеджер кэша отслеживает изображения через словарь Uri и расположение файлов. У меня есть очередь, которая обрабатывает до 5 изображений за один раз (веб-запросы Async, изменение размера выполняется в потоке пула потоков).
Проблема заключается в том, что класс WritableBitmap в Silverlight является элементом пользовательского интерфейса, то есть я должен перейти к потоку пользовательского интерфейса через диспетчер, чтобы сделать фактическое изменение размера, которое является глупым и замедляет все это. Это также означает, что мой Cache Manager эффективно однопоточный.
Таким образом, он запускает диспетчер кэша (пул потоков) → веб-запрос Async (пул потоков) → обратный вызов (пул потоков) → изменение размера (поток пользовательского интерфейса) → завершение задания кэширования (пул потоков).
Я искал стороннюю библиотеку, которая будет A) Компилировать и запускать на Windows Phone 7 и B) Можете изменять размеры изображений различных форматов, манипулируя потоком или массивом байтов и не завися от потока пользовательского интерфейса.
У кого-нибудь есть опыт?
Приветствия,
Тайлер