在 c# 中播放一个又一个声音

本文关键字:一个又一个 声音 播放 | 更新日期: 2023-09-27 18:32:26

我还有一个虚拟问题,我找不到好的答案。

我有这个程序,我想播放第一个声音,然后我想播放第二个声音。

基本上,这些声音被支持为不同的短语,例如"这是声音数字"一"和儿子等等。

我不知道为什么,但简单地使用各种 SoundPlayer 结果只能播放最后一个声音 - "一个"。

        SoundPlayer dzwiek = new SoundPlayer(@"E:'sokol'mp3'zdjecie_nr.wav");
        SoundPlayer dzwiek2 = new SoundPlayer(@"E:'sokol'mp3'1.wav");
        dzwiek.Play();
        dzwiek2.Play();

您能否向我解释为什么会发生这种情况,以及我应该怎么做才能防止将来出现此问题?

在 c# 中播放一个又一个声音

在这里查看这个答案。

如何知道声音播放器何时完成播放声音

基本上,使用PlaySync。您很可能希望在其他线程上执行此操作。

如果需要一些排序,最好只将声音事件排队(在某些限制)和后台辅助角色上的 PlaySync。必须考虑如果声音播放很长时间并且事情延迟,您可能会遇到一些问题。

我只是查看了SoundPlayer类的文档,我从未使用过。 文档清楚地表明 Play 方法是异步的,但我找不到任何迹象表明您可以在播放完成后收到通知。 这意味着,如果你想同步播放两个声音,你必须使用 PlaySync 方法,这有一个不幸的副作用,即冻结你的 GUI 或要求你自己做线程。