Windows phone 7 WP7背景音频资源不再可用

Windows phone 7 WP7背景音频资源不再可用,windows-phone-7,audio,media,background-audio,Windows Phone 7,Audio,Media,Background Audio,我正在为我的Windows Phone 7音乐和视频应用程序使用BackgroundAudioPlayer。播放一些音乐后,我使用MediaPlayerLauncher播放视频,然后按Back返回到我的应用程序。每当我使用BackgroundAudioPlayer.Instance时,都会出现这种情况。我收到错误“背景音频资源不再可用” 建议使用try/catch,但这不是一个好主意,可能会减慢应用程序的速度 其他建议在启动MediaPlayer之前调用BackgroundAudioPlayer

我正在为我的Windows Phone 7音乐和视频应用程序使用
BackgroundAudioPlayer
。播放一些音乐后,我使用
MediaPlayerLauncher
播放视频,然后按Back返回到我的应用程序。每当我使用
BackgroundAudioPlayer.Instance
时,都会出现这种情况。我收到错误“背景音频资源不再可用”

建议使用try/catch,但这不是一个好主意,可能会减慢应用程序的速度

其他建议在启动MediaPlayer之前调用
BackgroundAudioPlayer.Instance.Close()
。但是,当我播放音乐时,代理会再次加载.dll,这需要花费很多时间


如何修复此问题?

如果您在音频播放后播放视频,操作系统肯定会“终止”您的背景音频播放器。从你的问题来看,这似乎是100%的时间重复,这将证实这一点。您唯一的选择是在调用
BackgroundAudioPlayer.Instance.Close()
,然后播放视频后重新启动背景音频播放器。正如您所说,启动BAP时需要重新加载播放器DLL

根据评论更新后续信息

如果您没有实现流媒体音频代理,而只是一个AudioPlayer代理,那么无论如何,您都没有可以终止的流程。当操作系统需要让您处理某个操作(例如:用户操作、跟踪结束、关机)时,它会启动一个进程

BackgroundAudioPlayer.Instance.Close()
只需确保操作系统在诸如OP这样的场景中干净地释放这些资源即可


要重新启动后台音频,只需再次调用
BackgroundAudioPlayer.Instance.Play()

try/catch为什么是个坏主意?@PaulAnnetts因为它会减慢我们的应用程序在我的应用程序中,在启动MediaPlayer之前,当我调用Instance.Close()时,它会起作用。当我播放音乐时,我看到它加载了.dll。但是正如您提到的“使用Instance.Close()重新启动代理”,所以代理应该在我调用Close()之后立即加载.dll?好的点-Close()不会重新加载dll。我已经更新了答案。谢谢,但是Close()做什么呢?您说过,当我播放视频时,操作系统将终止代理,因此无需调用Close()?Close()将更干净地关闭BAP,以便在尝试访问旧的终止BAP实例时不会引发异常Close()终止BAP实例?或者终止它所在的进程?我看到它重新加载了.dll,所以进程被终止了?