C# 如何防止音频重叠?

C# 如何防止音频重叠?,c#,winforms,C#,Winforms,对不起,这个标题。我想不出更好的了。还有,对不起我的英语 我有这四张表格。表格2-4有一个按钮,按下该按钮时将播放表格1中的特定声音。有时,三个表单中的所有按钮几乎同时按下,这会导致表单1中播放的音频相互重叠。我如何防止这种情况 编辑: 当按下所有按钮时,我希望音频“轮流”播放。“音频2、3”在播放之前必须等待“音频1”完成播放,然后“音频3”也必须等待“音频2”完成。每个“音频播放”由一个语音合成器(使用.SpeakAsync播放)和一个声音播放器(使用.PlaySync播放)组成。我的ISP

对不起,这个标题。我想不出更好的了。还有,对不起我的英语

我有这四张表格。表格2-4有一个按钮,按下该按钮时将播放表格1中的特定声音。有时,三个表单中的所有按钮几乎同时按下,这会导致表单1中播放的音频相互重叠。我如何防止这种情况

编辑:
当按下所有按钮时,我希望音频“轮流”播放。“音频2、3”在播放之前必须等待“音频1”完成播放,然后“音频3”也必须等待“音频2”完成。每个“音频播放”由一个语音合成器(使用.SpeakAsync播放)和一个声音播放器(使用.PlaySync播放)组成。我的ISP上有一个internet中断,所以我只是在使用我的手机。手动在手机上键入代码会很困难,对此深表歉意。

嗨,我对我制作的一个游戏做了类似的事情,在这个游戏中,我遇到了声音相互叠加的问题。在处理声音的方法中,我做到了以下几点:

SoundPLayer sound = new SoundPlayer(..);
SoundPLayer anotherSound = new SoundPlayer(..);

public async void gameMethod()
{
   sound.Play();
   await Task.Delay(400); //length of sound
   //some code ...
   anotherSound.Play();
}

这对我很有效,只是使用了
等待任务。延迟(…)
增加声音播放时间-不确定这是否是一种方法,但可能会有帮助

当同时按下所有按钮时,预期的行为是什么?同时共享代码并显示您如何播放声音。要了解有关如何提出好问题的更多信息,请查看。我编辑了我的评论:)不要在y中播放音频我们的表单,但设计了一个专门的类来实现这一点。然后所有表单都会向该类的同一个实例发送音频播放请求,该实例本身可以自动将不同的剪辑排队,并逐个播放。在软件工程中,我们遵循这些常见的设计实践和原则。直到。我是否只传输播放声音的代码到一个类,它会自动排队播放?我不认为这将与我的情况下,因为每个声音是在一个不同的方法。