2014-04-07 181 views
0

每次從UI線程執行MediaPlayer.Play() UI會凍結很長一段時間。我不認爲你可以做任何關於開始播放SongCollection的時間,但至少UI應該保持響應。 從另一個線程運行MediaPlayer.Play()顯然不起作用。MediaPlayer.Play()導致UI凍結

+0

請您可以發佈相關代碼。 – deathismyfriend

回答

1

MediaPlayer是Xna命名空間中的一個組件。如果您在遊戲中使用此功能,你是最可靠運行GameLoop防止這種凍結情況的發生:GameLoop

如果在一個應用程序中使用該組件,您可以模擬這種行爲你自己

public MainPage() 
    { InitializeComponent(); 
     // Timer to simulate the XNA Game Studio game loop (Microphone is from XNA Game Studio) 
     DispatcherTimer dt = new DispatcherTimer(); 
     dt.Interval = TimeSpan.FromMilliseconds(33); 
     dt.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } }; 
     dt.Start(); 
} 

(請參閱有關如何在遊戲循環之外運行麥克風的完整示例:msdn

+0

所以你的意思是我應該把我的項目的其餘部分放入循環中? – Stacksatty

+0

否。該循環將用於遊戲場景中。在你的情況下,只在你使用音頻組件的頁面中添加dispatcherTimer –

+0

好吧,我試過了,但不幸的是它沒有修復凍結。 – Stacksatty