2016-10-20 54 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

通过if语句添加另一个固定的,因为如果最后的视频播放完毕,将承担就绪状态,停在那里:

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; 
        } 
       }