我有一个使用 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/