有没有办法同时播放两种声音?
我知道 SoundPlayer
无法执行此操作。
我不能使用 SoundEffect
,因为我相信它只是 XNA 的一部分。
这两个必需的声音将在未知的随机时间被调用。声音播放后需要进行控制。即,声音必须能够在播放结束之前停止。
最佳答案
引用 PresentationCore
和 WindowsBase
并试试这个...
var p1 = new System.Windows.Media.MediaPlayer();
p1.Open(new System.Uri(@"C:\windows\media\tada.wav"));
p1.Play();
// this sleep is here just so you can distinguish the two sounds playing simultaneously
System.Threading.Thread.Sleep(500);
var p2 = new System.Windows.Media.MediaPlayer();
p2.Open(new System.Uri(@"C:\windows\media\tada.wav"));
p2.Play();
编辑 我收到了反对票,可能是因为乍一看,这似乎会在第一个声音结束后播放第二个声音。不是,它们是由windows异步播放的。 sleep 就在那里,所以如果你逐字测试这段代码,你可以听到声音一起播放,如果没有延迟就不会引人注意,因为它们是相同的声音。
这段代码演示了两个声音在不同的线程上相互重叠播放,这有点毫无意义,因为播放无论如何都不会阻塞
new System.Threading.Thread(() => {
var c = new System.Windows.Media.MediaPlayer();
c.Open(new System.Uri(@"C:\windows\media\tada.wav"));
c.Play();
}).Start();
System.Threading.Thread.Sleep(500);
new System.Threading.Thread(() => {
var c = new System.Windows.Media.MediaPlayer();
c.Open(new System.Uri(@"C:\windows\media\tada.wav"));
c.Play();
}).Start();
http://msdn.microsoft.com/en-us/library/system.windows.media.mediaplayer.stop.aspx 该类还具有停止播放所需的控件
关于c# - 同时播放两种声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240002/