NAudio - 停止 WaveOut 播放

Posted

技术标签:

【中文标题】NAudio - 停止 WaveOut 播放【英文标题】:NAudio - Stop WaveOut playback 【发布时间】:2014-07-03 13:08:22 【问题描述】:

我正在将 Nadio 用于 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 的一个实例时,只要我加载它的第二个实例并尝试停止 first 创建的 form2 实例上的音频,它就会挂起,而第二个继续运行。我需要一种方法来停止表单上的音频,而无需在同一个设备编号上挂另一个。

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于NAudio - 停止 WaveOut 播放的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 交叉淡入淡出

在 NAudio waveOut 上无法流畅播放,WaveProvider 被清空太快

NAudio PlaybackState 永远不会停止?

NAudio 使用 C# 播放 x 毫秒的正弦波

Naudio - 处理 WaveIn / WaveOut

NAudio WaveOut 设备 ID