Naudio,如何告诉播放完成

Ste*_* Du 3 c# naudio

我正在使用NAudio库来编写一个简单的WinForms录音机/播放器.我的问题是如何判断播放完成?之后我需要关闭波流.

我知道下面列出了一个PlaybackStopped事件:

wfr = new NAudio.Wave.WaveFileReader(this.outputFilename);
audioOutput = new DirectSoundOut();
WaveChannel32 wc = new NAudio.Wave.WaveChannel32(wfr); 
audioOutput.Init(wc);
audioOutput.PlaybackStopped += new EventHandler<StoppedEventArgs>(audioOutput_PlaybackStopped);
audioOutput.Play();
Run Code Online (Sandbox Code Playgroud)

但是这个PlaybackStopped事件似乎只能通过调用触发audioOutput.stop(),是否有人知道如何确定播放是否完成?

我为此问题创建了一个开源项目,您可以在此处找到它:https://code.google.com/p/stack-overflow-questions/

Mar*_*ath 8

PlaybackStopped当您手动停止播放时,或者IWaveProvider您使用的Read方法返回0 时会引发该事件.此问题是,WaveChannel32当源流结束时不会停止返回数据,因此播放永远不会结束.该PadWithZeroes属性应设置为false以解决此问题.