gpt4 book ai didi

c# - MP3在单独的线程中播放

转载 作者:行者123 更新时间:2023-12-03 13:21:58 26 4
gpt4 key购买 nike

解决了一个问题,然后解决了另一个问题:在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 - Media item has completed playback.



您需要确保在UI线程上完成此操作。

关于c# - MP3在单独的线程中播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com