我有另一个虚假问题,我无法找到答案。
我有这个程序,我想播放第一个声音,之后我想播放第二个声音。
基本上这些声音是不同的短语,如"这是声音数字" "一个"和儿子在一起。
我不知道为什么,但简单地使用各种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 :(得分:0)
在这里查看这个答案..
How to know when SoundPlayer has finished playing a sound
基本上,使用PlaySync。您很可能希望在不同的主题上执行此操作。
如果你想要一些排序,那么在背景工作者上排队你的声音事件(有些限制)和PlaySync可能是个好主意。如果声音播放很长时间并且事情都会延迟,你将不得不考虑遇到一些问题。
答案 1 :(得分:0)
我只是看了SoundPlayer
类的documentation,这是我从未使用过的。文档清楚地表明Play
方法是异步的,但我找不到任何迹象表明你可以在完成播放时收到通知。这意味着如果你想同步播放两个声音,你将不得不使用PlaySync
方法,这会产生令人遗憾的副作用,即冻结你的GUI或要求你自己进行线程化。