2014-10-22 126 views
0

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

回答

相關問題