1

我正在制作一个 Windows Phone 8.1 应用程序。它向BackgroundMediaPlayer 发送一个播放列表,播放器开始播放somgs。但有时我在使用 BackgroundMediaPlayer.SendMessageToBackground 发送消息时收到异常“RPC 服务器不可用”,唯一可以解决的问题是重新启动应用程序。我在 Windows 10 移动版上对其进行测试,不确定 WP8.1 上是否存在此问题,但 WP8.1 模拟器中没有问题

4

1 回答 1

1

我在 Windows 10 Universal 项目中遇到了类似的问题,但我根本没有与 BackgroundMediaPlayer 成功交互。原因是我的后台音频任务没有启动;确保它启动后,我可以成功访问 BackgroundMediaPlayer.Current 成员,并使用 BackgroundMediaPlayer.SendMessageToBackground 等。这是实际工作的背景音频的官方 Microsoft 示例的组合,以及另一位成员的这篇文章导致我找到了解决方案。

听起来您与 BackgroundMediaPlayer 的初始交互工作了一段时间,但随后它停止工作。可能是它被关闭或过早暂停?您是否在任务的 Run 方法中获得延迟并存储它?获得延迟后连接 TaskCompleted 和 OnCancelled 的事件处理程序?是否有可能在某处意外调用 BackgroundMediaPlayer.Shutdown()?

我最初写了这个答案,然后才意识到 OP 正在成功播放音频,并且只有在程序运行一段时间后才会遇到这个问题。我原始答案的其余部分如下(它可能会帮助有类似问题的人):

我的后台任务没有启动,因为它位于类库而不是 Windows 运行时组件中(我认为这很重要,因为提供背景音频的进程 Windows.Media.BackgroundPlayback.exe 是本机应用程序,必须依赖在互操作上与我们编写的任务进行交互(它加载我们的任务作为其进程的一部分,而不是我们使用该任务的前台应用程序的一部分);当建议放置所有后台任务时,本Microsoft 指南确实明确说明了“Windows 运行时组件”在一个单独的项目中)。

通过将我的类库更改为 Windows 运行时组件(这涉及使任务类密封,以及其他限制),调用了 IBackgroundTask.Run 方法,我获得了延迟,并且我与 BackgroundMediaPlayer 交互的所有调用都开始工作适当地。

于 2015-08-18T06:51:33.370 回答