我在 Silverlight+XNA 组合应用程序中播放音乐时遇到了几个问题。它有几个 Silverlight 页面和在 XNA 中呈现的“游戏”页面。
首先,我在 Silverlight 主页面的 OnNavigatedTo 事件中添加了以下代码:
var song = (Application.Current as App).Content.Load<Song>("Music/Menu");
MediaPlayer.Play(song);
MediaPlayer.Volume = 0.9f;
MediaPlayer.IsRepeating = true;
音乐开始播放,但应用程序失败,出现以下异常,没有明显的调用堆栈提示:
InvalidOperationException occured
FrameworkDispatcher.Update has not been called. Regular FrameworkDispatcher.Update calls are necessary for fire and forget sound effects and framework events to function correctly.
其次,我有一些基于 Silverlight 的窗口使用UIElementRenderer
. 当需要时,我将控件的IsEnabled
标志更改为 true 并开始在屏幕上绘制它。这使得音乐在没有明显原因的情况下停止播放,并且当我关闭 Silverligh 窗口时它甚至不会重新开始。
从框架导航并返回到框架会使事情变得更糟。同一个调用MediaPlayer.Play(song)
说这首歌已经被处理了,即使我ContentManager
从新加载它。