XNA WP7 - открыть файл, не читая все это в память? - PullRequest
2 голосов
/ 01 апреля 2012

Я бы хотел иметь возможность открыть файл на Windows Phone 7 в игре XNA, не считывая весь файл в память. Я пытаюсь передавать потоковое аудио из WAV-файлов для передачи в DynamicSoundEffectInstance для воспроизведения.

Метод, который я сейчас использую, использует TitleContainer.OpenStream (), чтобы открыть файл WAV, а затем читает его в фоновом потоке, используя ThreadPool.QueueUserWorkItem (). Однако это вызывает заминку в начале, и сегодня я убедился, что TitleContainer.OpenStream () возвращает объект MS.Internal.InternalMemoryStream, что предполагает, что он читает весь файл в память в OpenStream ().

Это подтверждается тем фактом, что, по-видимому, фактически не требуется времени (или только времени memcpy ()) для выполнения Read (), и что Stream.BeginRead () (который включен в WP7 как часть Async CTP) вызывает свой обратный вызов перед возвратом.

Есть ли способ открыть файл на WP7 XNA, не считывая все это в память? Если нет, то это совершенно нелепо.

1 Ответ

0 голосов
/ 02 апреля 2012

Кажется, нет способа сделать это. Однако, поскольку я знаю размер фрагментов, которые я хочу прочитать (32 КБ), я могу разбивать файлы на фрагменты в автономном режиме и читать их по одному фрагменту за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...