Jer*_*eir 32
参考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();
Run Code Online (Sandbox Code Playgroud)
编辑 我收到了一个downvote可能是因为乍一看这看起来它会在第一个完成后播放第二个声音.它没有,它们是由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();
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/system.windows.media.mediaplayer.stop.aspx 该类还具有停止播放所需的控件
即使您创建了两个实例,"MediaPlayer"对象也不会让您一次播放两个声音.您需要引入本机Windows API"mciSendString".
[DllImport("winmm.dll")]
static extern Int32 mciSendString(string command, StringBuilder buffer, int bufferSize, IntPtr hwndCallback);
public Form1()
{
InitializeComponent();
mciSendString(@"open C:\Users\Jono\Desktop\applause.wav type waveaudio alias applause", null, 0, IntPtr.Zero);
mciSendString(@"play applause", null, 0, IntPtr.Zero);
mciSendString(@"open C:\Users\Jono\Desktop\foghorn.wav type waveaudio alias foghorn", null, 0, IntPtr.Zero);
mciSendString(@"play foghorn", null, 0, IntPtr.Zero);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31210 次 |
| 最近记录: |