C# 播放声音后处理音频?

C# 播放声音后处理音频?,c#,audio,dispose,C#,Audio,Dispose,如果我用SoundPlayer或NAudio播放声音, 我如何检查声音何时播放? 因为我现在用这个: waveOut.Play(); waveOut.Dispose(); 如果我测试这个,我会听到一点“咔嗒” 正如所料,但我想听到完整的长度 然后对其进行处理。我怎样才能做到这一点呢?有一个PlaybackStopped事件,但是这个 现在代码的问题是:Play方法是fire-and-forget。它开始播放,然后将控件返回到程序。它在后台运行。您现在立即处理它,这会导致它停止 如果没有其他

如果我用SoundPlayer或NAudio播放声音, 我如何检查声音何时播放? 因为我现在用这个:

waveOut.Play();  
waveOut.Dispose();
如果我测试这个,我会听到一点“咔嗒” 正如所料,但我想听到完整的长度
然后对其进行处理。我怎样才能做到这一点呢?

有一个
PlaybackStopped
事件,但是这个

现在代码的问题是:
Play
方法是fire-and-forget。它开始播放,然后将控件返回到程序。它在后台运行。您现在立即处理它,这会导致它停止


如果没有其他方法来完成这项工作,我建议列出您使用过的
waveOut
实例,并在关闭和处理表单时进行处理。这样至少可以释放内存。

OK,但当我在表单中执行操作时,它会崩溃,因此我认为如果关闭表单处理所有声音是没有意义的。但我将在代码中实现这一点。谢谢,我可以用这样的东西吗?SoundHOVER.Dispose();或者:SoundHOVER().Dispose();我似乎不能正确处理这个问题。只有在声音发出后才能进行处理。不能再早了,所以这是你必须等待的。问题是:你说不出来。如果你能得到wav的持续时间呢?可能是一次播放,没有停止、倒带和循环。