2014-10-22 31 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秒长。

回答