BackgroundMediaPlayer.SendMessageToBackground上的RPC服务器不可用异常

时间:2015-07-29 19:40:27

标签: c# windows-phone-8.1 media-player background-task windows-10-mobile

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

1 个答案:

答案 0 :(得分:1)

我在Windows 10 Universal项目中遇到了类似的问题,除了我根本没有与BackgroundMediaPlayer成功交互。原因是我的背景音频任务没有启动;确保它开始后我可以成功访问BackgroundMediaPlayer.Current成员,并使用BackgroundMediaPlayer.SendMessageToBackground等。它是背景音频实际工作的官方Microsoft示例和导致我解决方案的其他成员的this post的组合

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

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

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

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