我在c#WinForms中播放Audio使用Windows Media Player。我想在音频回放结束时显示一条消息。c#WindowsMediaPlayer音频结束
我有一个单独的音频类用于播放音频和播放方法我已经写:
Player = new WMPLib.WindowsMediaPlayer();
public static void play()
{
Player.controls.play();
Player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
}
private void Player_PlayStateChange(int NewState)
{
if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped)
isComplete=true;
}
public static boolean hasCompleted()
{
return isComplete;
}
这里isComplete是一个布尔变量初始化为false
在我的形式,代码我播放按钮是:
//Play my audio
while(!hasCompleted());
//display message
问题是,当我点击播放按钮,我的应用程序进入无限循环。
然而,当我这样做:
while(!hasCompleted())
MessageBox.Show("Playing");
//display message
它工作正常。 这是怎么回事? 我不想在播放时显示消息。 我尝试使用:
Player.currentMedia.duration
和持续时间字符串属性为定时器或应用的Thread.sleep而是由两个返回的值始终为0。
我还试图给出的1-2秒之前的延迟调用持续时间属性,但这不起作用,因为我的一些音轨只有2秒长。