BackgroundTask未在C#应用程序中启动
本文关键字:启动 应用程序 未在 BackgroundTask | 更新日期: 2023-09-27 18:24:45
我使用的是Windows Phone 8.1和C#。
通过以下Microsoft的MSDN示例(可在以下网址获得:http://code.msdn.microsoft.com/windowsapps/BackgroundAudio-63bbc319)为了创建一个音频播放器,我试图将其集成到我的项目中。然而,尽管代码在微软的示例中运行良好,但在我将其集成到项目中后,它就不能按预期工作了。
我将复制并粘贴可能包含该问题的文件。Constants.cs
、ApplicationSettingsHelper.cs
和MyPlaylistManager.cs
与示例中的保持相同(您可以通过单击上面的链接并点击"浏览代码"选项卡来查看)。
当我运行以下项目时,它会抛出以下错误:"后台音频任务没有在预期时间内启动"。如果我将bool result = SererInitialized.WaitOne(2000);
代码块(在StartBackgroundAudio()
中为bool result = true;
,它只需在控制台中打印"后台音频任务已初始化",然后停止。
页面.xaml.cs
http://pastebin.com/L2zxzJKv
BackgroundAudio.cs
http://pastebin.com/zR6uzBf3
我不明白我做错了什么。我最终取消了所有的更改,只使用了项目中示例中完全相同的代码。我在appmanifest中添加了扩展。
我创建了一个示例项目来帮助某人解决问题并回答这个问题。你可以在https://onedrive.live.com/redir?resid=ED2ED8732D8D457E!132&authkey=!AFBrZi5oI3k2zmU&ithint=文件%2zip
您提供的ZIP文件在解决方案中只有一个项目。背景音频任务需要是解决方案中自己的Windows运行时组件项目。请再次查看示例解决方案,并确保正确设置了解决方案。
您的后台音频任务需要在一个单独的项目中的原因是,所有后台任务都需要位于一个单独项目中,并且后台任务将在与前台应用程序不同的进程中运行。这样,如果操作系统挂起或终止您的应用程序(即您切换到另一个应用程序),则即使您的应用已挂起,您的后台音频任务也将继续运行并播放音频。然后,您需要通过在进程之间传递消息来在后台音频任务和前台进程之间进行通信(请参阅SendMessageToForeground
和SendMessageToBackground
)。
应用程序在后台运行时总是会被操作系统挂起,因此您需要一个单独的轻量级后台任务进程,该进程具有在后台运行音乐的特殊权限。
这些页面非常有助于解释所有的概念:
- 概述:背景音频(Windows Phone应用商店应用程序)
- 如何在后台播放音频(XAML)