我正在使用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实例上的音频,它就会挂起,而第二个保持运作。我需要一种方法来停止表格上的音频,而不会挂在另一个表格上的同一个设备上。
答案 0 :(得分:1)
不要将句柄传递给WaveOut
- 默认构造函数会为每个实例创建一个单独的句柄,因此他们的邮件不会混淆。