一尘不染

同时播放两个声音

c#

有没有办法同时播放两种声音?

我知道那SoundPlayer是做不到的。我无法使用,SoundEffect因为我相信它只是XNA的一部分。

所需的两种声音将在未知时间和随机时间被调用。播放后需要控制声音。也就是说,声音必须能够在完成播放之前停止。


阅读 741

收藏
2020-05-19

共1个答案

一尘不染

参考PresentationCoreWindowsBase和试…

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异步播放。睡眠在那里,所以如果您逐字测试此代码,您可以听到声音一起播放,没有延迟就不会引起注意,因为它们是相同的声音。

这段代码演示了两种声音在彼此独立的线程上播放的情况,这毫无意义,因为播放不会受到阻碍

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/zh-
cn/library/system.windows.media.mediaplayer.stop.aspx 该类还具有您需要停止播放的控件

2020-05-19