2016-01-29 190 views
-1

我有另一个虚拟问题,我找不到好的答案。c中声音播放后的声音#

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

从根本上讲,这些声音是不同的短语,如“这是声音号码”,“一个”和儿子等等。

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

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

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

请您解释一下为什么会发生这种情况,我该怎么做才能避免将来出现这个问题?

回答

0

退房这里这个答案..

How to know when SoundPlayer has finished playing a sound

基本上,使用PlaySync。你很可能想在另一个线程上做到这一点。

如果您想要进行一些排序,将背景工作人员的声音事件(某些限制)和PlaySync排队可能是一个好主意。如果声音播放了很长时间,事情就会延迟,你将不得不考虑你会遇到一些问题。

0

我刚才看到documentationSoundPlayer类,我从来没有用过。该文档清楚地表明,Play方法是异步的,但是我找不到任何迹象表明您可以在播放完成时收到通知。这意味着如果你想同时播放两个声音,你将不得不使用PlaySync方法,这种方法具有冻结GUI的不良副作用或要求你自己进行线程处理。