C# c WindowsMediaPlayer音频结束
我正在用WinC窗体播放音频使用Windows Media Player。我想在音频播放结束时显示一条消息 我有一个单独的音频类用于播放音频,在播放方法中,我编写了:C# c WindowsMediaPlayer音频结束,c#,duration,windows-media-player,C#,Duration,Windows Media Player,我正在用WinC窗体播放音频使用Windows Media Player。我想在音频播放结束时显示一条消息 我有一个单独的音频类用于播放音频,在播放方法中,我编写了: Player = new WMPLib.WindowsMediaPlayer(); public static void play() { Player.controls.play(); Player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChan
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
问题是,当我单击play按钮时,我的应用程序进入无限循环
但是,当我这样做时:
while(!hasCompleted())
MessageBox.Show("Playing");
//display message
它很好用。
为什么会这样?
我不想在播放时显示消息。
我尝试使用:
Player.currentMedia.duration
计时器或Thread.sleep应用程序的持续时间字符串属性,但两者返回的值始终为0
在调用duration属性之前,我也尝试过延迟1-2秒,但这不起作用,因为我的一些音频曲目只有2秒长。这不是最好的方法,因为您正处于繁忙的等待状态,这会浪费大量CPU周期,并且可能无法按您的意愿工作。我建议您使用事件。在这里,您可以找到一个非常基本的示例: