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

本文关键字:异常 服务器 RPC BackgroundMediaPlayer SendMessageToBackground | 更新日期: 2023-09-27 18:05:20

我正在制作一个windows phone 8.1应用程序。它向BackgroundMediaPlayer发送一个播放列表,然后播放器开始播放歌曲。但有时我会得到一个例外"RPC服务器不可用"时发送消息与BackgroundMediaPlayer。SendMessageToBackground,唯一可以修复的是重新启动应用程序。我在windows 10手机上测试它,不确定这个问题是否存在于WP8.1,但在WP8.1模拟器中没有问题

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

我在Windows 10 Universal项目中遇到了类似的问题,只是我根本没有成功地与BackgroundMediaPlayer进行交互。原因是我的背景音频任务没有启动;确保它启动后,我可以成功访问BackgroundMediaPlayer。当前成员,并使用后台媒体播放器。SendMessageToBackground等等。它结合了微软官方的背景音频样本,以及另一个成员的帖子,让我找到了解决方案。

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

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

我的后台任务没有启动,因为它是在一个类库而不是Windows运行时组件(这很重要,我认为,因为提供后台音频的进程,Windows. media . backgroundplayback .exe,是一个本地应用程序,必须依赖互操作与我们写的任务进行交互(它加载我们的任务作为其进程的一部分,而不是使用任务的前台应用程序的一部分);这个微软指南在建议将所有后台任务放在一个单独的项目中(/em>)时特别说明了"Windows运行时组件"。

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