2012-10-08 88 views
1

我正在使用WP7上的後臺音頻播放器代理構建音樂播放器。我想啓用UI部分和代理部分之間的通信。許多guides建議使用隔離儲存,但我認爲這不是一個好辦法WP7進程間通信

有什麼辦法,使進程間通信在Windows Phone 7的

回答

1

在Windows Phone 8 SDK中,我們現在可以使用系統範圍的Mutex對象。

它似乎前臺應用程序和後臺代理運行在手機上作爲單獨的進程。所以即使你實例化同一個類,每個進程都有不同的實例

到目前爲止,我所知道的最佳解決方案是讓每個進程將「共享」數據結構映射到獨立存儲文件,然後使用全系統互斥鎖(名爲Mutex)阻止一個進程讀取文件其他人正在寫它。如果一個進程始終是數據結構的編寫者,那麼它就會更簡單,所以它不必擔心異步地合併其他進程所做的更改。如果每個進程都必須是數據結構的某個部分的寫入者,那麼通常情況下,請考慮將這些部分分離爲單獨的數據結構並分離獨立存儲文件,其中一個進程讀取一個文件並寫入另一個文件,另一個進程寫入第一個並閱讀第二篇。 (所有讀取和互斥內寫入。使用相同互斥兩個文件和兩個進程,以避免死鎖。)

+0

感謝可用,我以前也知道這一點,但我認爲它只是解決方法。我需要真正的進程間通信 – onmyway133

+1

您需要比BackgroundAudioPlayer提供的更多嗎?這允許前臺發送fastforward,改變軌道等命令給在後臺運行的音頻播放器。它非常專用於媒體播放。如果你需要比這更一般的東西,我可以建議的唯一的其他事情是TCP套接字,但是你需要Socket.Listen(),它只在WP8中可用(你的問題特別提到了WP7)。 – BobHy

0

試試這個:

phoneApplicationPage.State

+0

的PhoneApplicationPage是不是在代理 – onmyway133