2015-11-26 169 views
3

如果我用SoundPlayer或NAudio播放聲音, 如何檢查聲音播放時間? 因爲我用這個現在:聲音播放後處理音頻?

waveOut.Play(); 
waveOut.Dispose(); 

如果我測試這個然後我聽到一點「點擊」 符合市場預期,但我想聽到的聲音的個全長 再處理它。我怎樣才能做到這一點?

回答

1

還有PlaybackStopped事件,但是那個doesn't seem a real solution

現在代碼存在問題:Play方法很容易被忽略。它開始播放,然後將控制權還給您的程序。它在後臺運行。您立即立即處置它,導致它停止。

如果沒有其他辦法可以完成這個工作,我建議列出您使用的waveOut實例,並在關閉並處理表單時處理它們。這樣,至少內存得到釋放。

+0

Oke,但是當我在表單中做東西時它崩潰了,所以我認爲如果我關閉表單處理所有聲音是沒有意義的。 但我會在代碼中實現這一點。 謝謝 –

+0

我可以使用這樣的東西嗎? SoundHOVER.Dispose(); 或者: SoundHOVER()。Dispose(); 我似乎無法得到這個權利。 –

+0

僅當聲音完成時才能進行處置。沒有更快的時間,所以這是你必須等待的。問題是:你不能說。 –