SoundEffect.Play()线程注意事项

时间:2010-10-30 22:36:21

标签: windows-phone-7

我正在尝试使用SoundEffect.Play()来理解线程和排队模型,以便我可以准确地计时音符。

声音是否在UI线程上同步播放?或者是用于在正确的时间播放样本的后台线程?

我已经读过我需要调用FrameworkDispatcher.Update()来播放声音,但这是做什么的?

是否有声音队列?如果我在正在播放的SoundEffect上调用play,该怎么办?另一个实例是并行启动,还是当前停止?

至于测序声音,我认为最好的方法是使用后台线程和Thread.Sleep()来确保我在正确的时间醒来播放下一个“音符”。或者有更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

SoundEffects以异步方式播放。这就是为什么你可以一次玩很多游戏。

假设您正在Silverlight中创建应用程序,则必须调用FrameworkDispatcher.Update()(通常每秒20次),因为SoundEffect来自XNA框架并且期望基础游戏循环作为它的执行模型。重复调用FrameworkDispatcher.Update()可以模拟这一点。

ApplicationLifeObject中设置对此的调用是最常见的方式。

在排序声音方面,我会使用计时器并以这种方式触发新声音,而不是通过Thread.Sleep进行大量调用。