在c#中播放声音

时间:2016-01-29 20:37:42

标签: c# audio

我有另一个虚假问题,我无法找到答案。

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

基本上这些声音是不同的短语,如"这是声音数字" "一个"和儿子在一起。

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

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

        dzwiek.Play();
        dzwiek2.Play();

请您解释一下为什么会发生这种情况,以及我该怎样做以防止将来出现此问题?

2 个答案:

答案 0 :(得分:0)

在这里查看这个答案..

How to know when SoundPlayer has finished playing a sound

基本上,使用PlaySync。您很可能希望在不同的主题上执行此操作。

如果你想要一些排序,那么在背景工作者上排队你的声音事件(有些限制)和PlaySync可能是个好主意。如果声音播放很长时间并且事情都会延迟,你将不得不考虑遇到一些问题。

答案 1 :(得分:0)

我只是看了SoundPlayer类的documentation,这是我从未使用过的。文档清楚地表明Play方法是异步的,但我找不到任何迹象表明你可以在完成播放时收到通知。这意味着如果你想同步播放两个声音,你将不得不使用PlaySync方法,这会产生令人遗憾的副作用,即冻结你的GUI或要求你自己进行线程化。