2016-10-20 7 views
-1

В настоящее время у меня есть программа, которая воспроизводит набор видеороликов из плейлиста, а затем отображает набор изображений после того, как видео сделаны. В настоящее время я использую событие PlayStateChange для подсчета каждый раз, когда видео заканчивается, но это приводит к отображению изображений в начале последнего видео, а не в конце. Мне нужен способ запуска изображений при полном воспроизведении плейлиста. Я даже пробовал задерживать код, но это заставляет мой метод отображения изображений действовать вяло. Вот пример кода, а не то, что действительно нужно ответить на мой вопрос.Как определить конец плейлиста AxWindowsMediaPlayer

private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) 
    { 
     if (!currSess.playOne) 
     { 
      Console.WriteLine(player.playState); 
      if (e.newState == 8 | e.newState == 9) 
      { 
       if (e.newState == 8) 
       { 
        currSess.playQueue++; 
        Console.WriteLine(currSess.playQueue); 
       } 

      } 

       if (currSess.playQueue+1 > player.currentPlaylist.count -1) 
       { 
       // await Task.Delay(1000); 
        displayImgs(); 
        player.PlayStateChange -= foo; 
        currSess.playQueue = 0; 
       } 
     } 
    } 
+0

Почему -1 ??? Это правильный вопрос, который я не могу найти нигде в Интернете. Не найдено ни одного решения других подобных вопросов. – Harrison

ответ

0

Fixed добавлением другой, если заявление, так как, если последнее видео сделано играть он будет считать состояние готовности и останавливаться на достигнутом:

if (currSess.playQueue+1 > player.currentPlaylist.count -1) 
       { 
        if (e.newState == 10) 
        { 
         // await Task.Delay(1000); 
         displayImgs(); 
         currSess._timer.start(); 
         Console.WriteLine(currSess._timer); 
         AllowControls(true); 
         allowItems(); 
         player.PlayStateChange -= foo; 
         currSess.playQueue = 0; 
        } 
       }