NAudio - 停止WaveOut播放

时间:2014-07-03 13:08:22

标签: c# winforms naudio

我正在使用Naudio进行winform项目,当第一个表单基本上加载它时 调用另一个表单并初始化一个WaveOut对象,将表单句柄传递给构造函数。

//in form 1
{
   Form2 frm2 = new Form2();
   frm2.InitializeWaveOut(this.Handle);
   frm2.Show();
} 

//in form 2
public void InitializeWaveOut(IntPtr wHandle)
{
  WaveOut wo = new WaveOut(wHandle);
  wo.DeviceNumber = 0;

  // etc...
}

Form2_Load()
{
  wo.Play();
}

一切正常,声音播放正确,但我需要能够点击一个按钮停止(暂停)音频一段时间,然后恢复它。再一次这是正常工作但只有当我加载一个form2实例时,只要我加载它的第二个实例并尝试停止第一个创建的form2实例上的音频,它就会挂起,而第二个保持运作。我需要一种方法来停止表格上的音频,而不会挂在另一个表格上的同一个设备上。

1 个答案:

答案 0 :(得分:1)

不要将句柄传递给WaveOut - 默认构造函数会为每个实例创建一个单独的句柄,因此他们的邮件不会混淆。