我希望能够在XNA游戏中在Windows Phone 7上打开文件,而无需将整个文件读入内存。我正在尝试从WAV文件中传输音频,然后传递给DynamicSoundEffectInstance进行播放。
我现在使用TitleContainer.OpenStream()方法打开WAV文件,然后使用ThreadPool.QueueUserWorkItem()在后台线程上读取它。但是,这会在开头引起一个障碍,今天我验证了TitleContainer.OpenStream()返回一个MS.Internal.InternalMemoryStream对象,这表明它正在OpenStream()中将整个文件读入内存。
这证实了这样一个事实:它似乎没有时间(或者,只有memcpy()的值得花时间)来做Read()和Stream.BeginRead()(包含在WP7作为Async CTP的一部分)在返回之前调用它的回调。
有没有办法在WP7 XNA上打开文件而不将整个内容读入内存?如果没有,这完全是荒谬的。
答案 0 :(得分:0)
似乎没有办法做到这一点。但是,由于我知道要读取的块大小(32kB),我可以将文件拆分为脱机块并一次读取一块。