Функция, когда заканчивается песня (Сase 8 ' MediaEnded из MSDN), запускает следующую песню, но почему-то когда проигрывает песня, песня меняется, но не проигрывается.
private void Player_PlayStateChange(int NewState)
{
if (NewState == 8 && isRepeat)
{
Player.controls.stop();
if (CurrentMediaIndex + 1 == Playlist.Count)
{
CurrentMediaIndex = 0;
Player.currentMedia = Playlist.First();
}
else
{
CurrentMediaIndex++;
Player.currentMedia = Playlist[CurrentMediaIndex];
}
Player.controls.play();
}
}
Нашел ответ и решение (первоисточник уже не найду). WMP нужно время, чтобы сменить аудио, поэтому проблему можно решить так:
private void Player_PlayStateChange(int NewState)
{
if (NewState == 8 && isRepeat)
{
Player.controls.stop();
if (CurrentMediaIndex + 1 == Playlist.Count)
{
CurrentMediaIndex = 0;
Player.currentMedia = Playlist.First();
}
else
{
CurrentMediaIndex++;
Player.currentMedia = Playlist[CurrentMediaIndex];
}
System.Windows.Threading.DispatcherTimer dispatcherTimer = new
System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 10);
dispatcherTimer.Start();
}
}private void dispatcherTimer_Tick(object sender, EventArgs e)
{
if(Player.playState == WMPLib.WMPPlayState.wmppsReady)
{
Player.control.play();
(sender as System.Windows.Threading.DispatcherTimer).Stop();
}
}Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости