我在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秒長。