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# 中取消后台音频任务的主要内容,如果未能解决你的问题,请参考以下文章

如何在WP8.1 c#中将广告放置在固定位置

WP8.1 和UWP 如何使用下载网页的上的音频 并保存

如何使用 Windows Phone 的麦克风在网页中录制音频?

如何在 C# Winforms 应用程序中取消执行长时间运行的异步任务

如何在windows窗体应用程序c#中中止当前任务

LocalSettings 和后台任务 WP 8.1