У меня есть приложение на Compact Framework, которое имеет несколько больших встроенных ресурсов (некоторые из них имеют размер несколько мегабайт). Я звоню assembly.GetManifestResourceStream(...)
, который возвращает Stream
объект. Однако я заметил, что на некоторых устройствах этот вызов не только занимает много времени, но и приводит к тому, что устройству не хватает доступной памяти. В конце концов я использовал рефлектор для просмотра кода для этого метода на компактной платформе, и он использует внутренний метод для получения byte[]
данных ресурса. Затем он возвращает эти данные, завернутые в MemoryStream
.
Есть ли способ извлечь ресурс без использования этого вызова, так как он всегда будет считывать все в память? В идеале я хотел бы работать с Stream
, к которому я могу получить произвольный доступ, не считывая все это в память (аналогично тому, как работает FileStream
). Было бы неплохо, если бы я мог просто открыть FileStream
на сборке и начать чтение с соответствующим смещением, но я сомневаюсь, что именно так встроены ресурсы.