2011-07-24 5 views
3

Я использую медиаплеер в Windows Phone 7 для воспроизведения музыки в коллекции песен телефона. Но когда он воспроизводит музыку, они будут исключением, а ошибка укажетМедиаплеер в Windows Phone 7

FrameworkDispatcher.Update не был вызван. Регулярные вызовы FrameworkDispatcher.Update необходимы для пожара и забывают звуковые эффекты и каркасные события для правильной работы.

Как я могу изменить свой код?

private void songBtn_Click(object sender, RoutedEventArgs e) 
{ 
    using (var ml = new MediaLibrary()) 
    { 
     foreach (var song in ml.Songs) 
     { 
      System.Diagnostics.Debug.WriteLine(song.Artist + " " + song.Name); 
      MessageBox.Show(song.Artist + " " + song.Name); 
     } 
     MediaPlayer.Play(ml.Songs[0]); 
    } 
} 

ответ

6

Вы должны вызвать

FrameworkDispatcher.Update() 

всякий раз, когда вы делаете вызов в библиотеку XNA медиа так что ваш код должен выглядеть следующим образом

using (var ml = new MediaLibrary()) 
{ 

    foreach (var song in ml.Songs) 
    { 
     System.Diagnostics.Debug.WriteLine(song.Artist + " " + song.Name); 
     MessageBox.Show(song.Artist + " " + song.Name); 

    } 
    FrameworkDispatcher.Update(); 
    MediaPlayer.Play(ml.Songs[0]); 
} 
+0

Спасибо Валид за помощь решить –

+0

Есть ли способ определить, когда песня закончилась, а затем повторить воспроизведение песни? –

+0

используйте событие MediaPlayer.MediaStateChanged, чтобы получать уведомления о воспроизведении изменений состояния, затем вы можете использовать MediaPlayer.State для получения текущего состояния, другой альтернативой является установка значения MediaPlayer.IsRepeating в true, поэтому вам не нужно отслеживать изменения состояния – Waleed

2

Ошибка возникает, потому что вы используете XNA Framework в обычном приложении Windows Phone 7.

Если вы прочитали описание ошибки, вы получили бы эту ссылку в MSDN: Enable XNA Framework Events in Windows Phone Applications, в которой четко объясняется, что делать.