我有一个函数可以从我的资源中读取我的mp3,效果非常好。
不幸的是,如果我在我的按钮上传递鼠标30次,40次或50次,最终导致waveOut.init
:( {" AlreadyAllocated calling waveOutOpen "} )
Public waveOut As WaveOut = New WaveOut
Private Sub Panel_Bouton_MouseEnter(sender As Object, e As EventArgs) Handles Panel_Bouton.MouseEnter
Play_Sound()
End Sub
Public Sub Play_Sound()
Dim mp3file As MemoryStream = New MemoryStream(My.Resources.Clic)
'Clic.mp3 is in my Resources
Dim mp3Reader As Mp3FileReader = New Mp3FileReader(mp3file)
If waveOut.PlaybackState = PlaybackState.Playing Then
waveOut.Stop()
' I tried this but no effect...
End If
waveOut.Init(mp3Reader)
waveOut.Play()
End Sub
答案 0 :(得分:0)
我建议不要在WaveOut
上不断调用Init。相反,只需要一个(看起来你也可以只有一个Mp3FileReader
),然后在Play_Sound
函数中设置mp3Reader.Position = 0
并重新启动WaveOut
个实例如果它停止了(我假设你的代码片段中你不想一次播放多个声音实例)。