c# - AudioPlaybackAgent 中的计时器

标签 c# windows-phone-8 dispatchertimer background-agents background-audio

我有一个使用 BackgroundAudioPlayer 的网络广播应用。

我需要音频播放代理中的计时器来更新从互联网广播电台的 API 中提取的 BAP 当前播放轨道的轨道标题。

DispatcherTimer 添加到音频播放代理中会给我一个跨线程异常,并使用:

Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                // Code
            });

没用。

我需要此处的代码,因为如果我将更新代码放在应用程序本身中,当用户导航离开应用程序时,更新将停止(与 Windows 8 的行为非常不同)。

我无法使用预定代理,因为它们每 30 分钟仅运行一次 (IIRC)。

这在 Windows Phone 上是否可行?

最佳答案

以下是背景音频播放器的 MSDN 文档的摘录:

在任务之间发送消息: 有时您会希望在后台音频应用程序的两个进程之间进行通信。例如,您可能希望后台任务在新轨道开始播放时通知前台任务,然后将新歌名发送给前台任务以显示在屏幕上。一个简单的通信机制会在前台和后台进程中引发事件。 SendMessageToForeground 和 SendMessageToBackground 方法分别调用相应任务中的事件。数据可以作为参数传递给接收任务中的事件处理程序。使用名为 ValueSet 的新类传递数据。这个类是一个字典,包含一个字符串作为键和其他值类型作为值。您可以传递简单的值类型,例如 int、string、bool 等。

https://msdn.microsoft.com/en-US/library/windows/apps/xaml/dn642090

希望这对您有所帮助!

关于c# - AudioPlaybackAgent 中的计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20452836/

相关文章:

windows-phone-8 - Windows Phone 8 静态资源样式

c# - 为什么 DispatcherTimer 在某个随机时间后停止触发?

c# - 实时更新大量对象(1,000+)的最有效方法

c# - UserControl 的本地化属性

c# - 使用 ScrollViewer 捏缩放

c# - 如何在 WPF 和 C# 中暂停视频并从另一个位置播放它

c# - WCF - Visual Studio 不会生成 SVC 文件

c# - DateTime 列可为空时 Entity Framework 种子方法 DateTime 错误

c# - 以编程方式启用/禁用硬件设备

c# - 避免没有参数的SQL注入(inject)