【问题标题】:WP8.1 How to cancel a Background Audio Task in C#WP8.1 如何在 C# 中取消后台音频任务
【发布时间】:2014-07-03 18:59:40
【问题描述】:

我想从 wp8.1 中的应用程序/后台任务中取消后台音频任务 - 有没有办法从代码中取消?在 msdn 或其他任何地方都找不到任何东西..

我为什么要这样做的背景:
在 wp8 中,很多用户对 systemmediacontrols 一直处于活动状态这一事实并不感到好笑。在 wp8.1 中也是如此:微软表示应该取消后台任务(i)当另一个应用程序想要使用背景音频时,或者(ii)在超时后(我想我在某处读过它)。由于在我的测试中似乎永远不会发生这种超时取消,我想给用户一个关闭洞应用程序的可能性(包括背景音频)。

如有任何建议,我将不胜感激。
最好的

【问题讨论】:

  • 这是一个BackgroundWorker,只是你开始的一个新线程还是其他什么?
  • 感谢您的建议。我更新了我的问题。它不是后台工作者,而是 wp8.1 后台音频任务。最佳

标签: c# windows-phone-8.1 background-task


【解决方案1】:

至于BackgroundMediaPlayer你可以打电话给BackgroundMediaPlayer.Shutdown,据说here at MSDN

BackgroundMediaPlayer.Shutdown 关闭媒体管道并从内存中释放 MediaPlayer 对象。如果您在调用 Shutdown 后再次尝试访问对 BackgroundMediaPlayer.Current 的引用,您将收到错误消息。关闭是为了让应用在其任务被取消时清理媒体管道。

所以请记住将所有处理程序从前台-后台通信中分离出来,并禁止调用 BackgroundMediaPlayer.Current,因为它会再次启动它。

【讨论】:

    【解决方案2】:

    处理取消的典型方法是通过传递CancellationToken。有关详细信息,请参阅 MSDN 上的Cancellation in Managed Threads

    【讨论】:

    • 感谢您的建议。不幸的是,这不是一个简单的后台任务,它是一个 8.1 的后台音频任务。我不确定 CancellationToken 是否可以在那里使用.. :-( 不这么认为。
    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多