WP8.1 如何在 C# 中取消后台音频任务
Posted
技术标签:
【中文标题】WP8.1 如何在 C# 中取消后台音频任务【英文标题】:WP8.1 How to cancel a Background Audio Task in C# 【发布时间】:2014-07-03 18:59:40 【问题描述】:我想从 wp8.1 中的应用程序/后台任务中取消后台音频任务 - 有没有办法从代码中取消?在 msdn 或其他任何地方都找不到任何东西..
我为什么要这样做的背景: 在 wp8 中,很多用户对 systemmediacontrols 一直处于活动状态这一事实并不感到好笑。在 wp8.1 中也是如此:微软表示应该取消后台任务(i)当另一个应用程序想要使用背景音频时,或者(ii)在超时后(我想我在某处读过它)。由于在我的测试中似乎永远不会发生这种超时取消,我想给用户一个关闭洞应用程序的可能性(包括背景音频)。
如有任何建议,我将不胜感激。 最好的
【问题讨论】:
worker.CancelAsync() 这是一个BackgroundWorker,只是你开始的一个新线程还是其他什么? 感谢您的建议。我更新了我的问题。它不是后台工作者,而是 wp8.1 后台音频任务。最佳 【参考方案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 是否可以在那里使用.. :-( 不这么认为。以上是关于WP8.1 如何在 C# 中取消后台音频任务的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Windows Phone 的麦克风在网页中录制音频?