MP3在单独的线程中播放

一个问题得到解决,另一个问题得到解决:在C#程序中,我使用以下方法将标签颜色设置为绿色,然后播放mp3文件,最后将颜色设置为黑色。 问题是声音似乎是在一个额外的线程中播放,因此两种颜色的变化之间的时间太短(实际上,在播放文件时它应该具有绿色)。
private void playSound()
    {
        label1.ForeColor = Color.LimeGreen;
        Application.DoEvents();

        WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayer();
        wmp.URL = @"C:examplesound.mp3"; // duration about 30s
        wmp.controls.play();

        label1.ForeColor = Color.Black;
    }
有没有什么可以强制标签在播放mp3文件时保持绿色?     
已邀请:
当播放在另一个线程中时,请勿将颜色直接设置为黑色。 当前曲目结束时,WMPLib发出
PlayStateChange
事件。 所以添加处理程序:
wmp.PlayStateChange += this.Player_PlayStateChange;

private void Player_PlayStateChange(int newState)
{
    if ((WMPLib.WMPPlayState)newState == WMPLib.WMPPlayState.wmppsStopped)
    {
        label1.ForeColor = Color.Black;
    }
}
playState
的页面有一个值列表:   8 - MediaEnded - 媒体项目已完成播放。 您需要确保在UI线程上完成此操作。     
尝试挂钩PlayStateChanged事件并将
label1.ForeColor = Color.Black;
放在那里。 目前,你的代码中没有任何内容表明只有在它开始播放之后它才会变成黑色。     

要回复问题请先登录注册