WP8.1如何用C#取消后台音频任务

3
我希望能够在WP8.1的应用/后台任务中取消背景音频任务 - 是否有一种从代码中引发取消的方法?我在MSDN或其他任何地方都找不到任何信息...
为什么要这样做: 在WP8中,许多用户对系统媒体控件始终处于活动状态并不是很满意。在WP8.1中也是如此:Microsoft表示,在以下情况下应该取消后台任务:(i)当另一个应用程序想要使用后台音频时,或者(ii)超时后(我认为我在某个地方读到过)。由于在我的测试中似乎永远没有发生超时取消,因此我希望给用户关闭整个应用程序(包括背景音频)的可能性。
如果您有任何建议,我将不胜感激。 最好

这是一个 BackgroundWorker 吗?还是你新启动的线程或其他什么东西? - mclaassen
谢谢您的建议。我更新了我的问题。它不是后台工作程序,而是WP8.1后台音频任务。最好的。 - formatC
2个回答

2
关于BackgroundMediaPlayer,你可以调用BackgroundMediaPlayer.Shutdown,正如在MSDN这里所说的:

BackgroundMediaPlayer.Shutdown关闭媒体管道并释放MediaPlayer对象的内存。如果你尝试在调用Shutdown后再次访问BackgroundMediaPlayer.Current的引用,你将会得到一个错误。Shutdown是为了在应用程序任务被取消时清理媒体管道。

因此,请记住分离所有前景-后台通信的处理程序,并避免调用BackgroundMediaPlayer.Current,因为它会重新启动它。

0
处理取消的典型方式是通过传递一个 CancellationToken。有关详细信息,请参见 MSDN 上的 托管线程中的取消

感谢您的建议。不幸的是,这不是一个简单的后台任务,而是一个8.1后台音频任务。我不确定CancellationToken是否可以在那里使用... :-( 不认为可以。 - formatC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接