我正在使用计时器将多个音频文件连接在一起。这里有一个音频文件列表,计时器将一一读取文件。读取音频后,将开始播放。目的是在音频文件播放完后立即播放音频文件(不间断)。
(我正在使用Naudio)
这是代码:
private void timer_key_Tick(object sender, EventArgs e)
{
if(!isPlaying)
{
//play the current audio
DirectSoundOut dso = sounds2[key_indexer];
dso.Play();
targetMusics.Add(dso);
}
else
{
foreach (DirectSoundOut dso in targetMusics)
{//stop the current audio
dso.Stop();
}
targetMusics.Clear();
key_indexer++; //switch to the next audio
if (key_indexer >= myMT.Keys.Count)
{
key_indexer = 0;
timer_key.Stop();
}
}
isPlaying = !isPlaying;
}
但是,事实是,当第一首音乐结束时,第二首没有立即播放。一秒钟休息之后。这是计时器本身的问题吗?我该如何更改?
最佳答案
感谢@HansPassant的帮助。我对此计时器的逻辑有误。这是我应用他的建议后的正确代码:
//stop the current playing
foreach(DirectSoundOut d in targetMusics)
{
d.Stop();
}
targetMusics.Clear();
//stop the entire process
if (key_indexer >= myMT.Keys.Count)
{
key_indexer = 0;
timer_key.Stop();
}
else
{ //play the current audio
DirectSoundOut dso = sounds2[key_indexer];
targetMusics.Add(dso);
dso.Play();
key_indexer++;
}