2014-09-26 50 views
2

我正在使用Windows Phone 8.1和C#。BackgroundTask在C#中沒有觸發應用程序

遵循微軟的MSDN示例(網址爲:http://code.msdn.microsoft.com/windowsapps/BackgroundAudio-63bbc319)來創建一個音頻播放器,我試圖把它融入我的項目。但是,雖然代碼在Microsoft示例中工作正常,但在將其集成到我的項目中後,它無法按預期工作。

我會複製和粘貼文件很可能包含的問題。 Constants.cs,ApplicationSettingsHelper.csMyPlaylistManager.cs保持與樣本中相同(您可以通過單擊上面的鏈接並點擊「瀏覽代碼」選項卡查看)。

當我運行下面的項目,它引發以下錯誤:「後臺音頻任務沒有在預期時間開始」。如果我改變的代碼(StartBackgroundAudio()bool result = SererInitialized.WaitOne(2000);bool result = true;,它只是簡單地打印在控制檯「背景音頻任務初始化」,然後停止。

Page.xaml.cs

http://pastebin.com/L2zxzJKv

BackgroundAudio.cs

http://pastebin.com/zR6uzBf3

我不明白我做錯了什麼。我最終取消了所有的更改,並簡單地使用項目中樣本的完全相同的代碼。我在appmanifest中添加了擴展。

我創建了一個示例項目,以幫助別人解決問題,回答這個問題。您可以在https://onedrive.live.com/redir?resid=ED2ED8732D8D457E!132&authkey=!AFBrZi5oI3k2zmU&ithint=file%2czip

回答

2

找到它,你只提供在該解決方案一個項目的ZIP文件。後臺音頻任務需要在解決方案中自行單獨運行Windows運行時組件項目。請再次查看示例解決方案,並確保您已正確設置解決方案。

爲什麼你的背景音頻任務需要在一個單獨的項目,是因爲所有後臺任務需要在一個單獨的項目,和後臺任務會比你的前臺應用程序的獨立進程運行。這樣,如果操作系統暫停或終止您的應用程序(即您切換到另一個應用程序),則即使您的應用程序已被暫停,您的後臺音頻任務也將繼續運行並播放音頻。然後,您需要通過在進程之間傳遞消息來在後臺音頻任務和前臺進程之間進行通信(請參閱SendMessageToForegroundSendMessageToBackground)。

應用總是會被操作系統放在後臺時暫停,因此你需要有在後臺播放音樂的目的運行特殊權限的單獨輕巧的後臺任務進程。

這些頁面都是在解釋所有的概念非常有用:

+0

哦,我不知道backgroundaudiotask文件必須在一個單獨的解決方案。這是不是工作原因?另外,爲什麼它必須是一個不同的解決方案? – DemCodeLines 2014-09-27 01:01:24

+0

背景音頻任務需要在*解決方案*中作爲單獨的*項目*,而不是作爲獨立的*解決方案*(解決方案包含多個項目)。 – 2014-09-27 01:18:23

+0

感謝您的答案和鏈接。 – DemCodeLines 2014-09-27 03:30:27

相關問題