如何检测 AxWindowsMediaPlayer 播放列表的结尾
How to detect the end of an AxWindowsMediaPlayer playlist
我目前有一个程序可以播放播放列表中的一组视频,然后在视频播放完毕后显示一组图像。我目前正在使用 PlayStateChange 事件来计算每次视频结束的时间,但这会导致图像显示在最后一个视频的开头而不是结尾。当播放列表完全播放完毕时,我需要一种方法来触发图像。我什至尝试延迟代码,但这会导致我的显示图像方法出现问题。这是一个代码示例,并不是真的需要回答我的问题。
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;
}
}
}
已通过添加另一个 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;
}
}
我目前有一个程序可以播放播放列表中的一组视频,然后在视频播放完毕后显示一组图像。我目前正在使用 PlayStateChange 事件来计算每次视频结束的时间,但这会导致图像显示在最后一个视频的开头而不是结尾。当播放列表完全播放完毕时,我需要一种方法来触发图像。我什至尝试延迟代码,但这会导致我的显示图像方法出现问题。这是一个代码示例,并不是真的需要回答我的问题。
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;
}
}
}
已通过添加另一个 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;
}
}