■91060 / inTopicNo.1) |
WaveStreamのクラス化がうまくいかない |
□投稿者/ TOTO (1回)-(2019/05/23(Thu) 12:52:17)
|
分類:[.NET 全般]
https://smdn.jp/programming/netfx/tips/set_volume_of_soundplayer/
このページに音量を調整可能な
WaveStreamのクラスのコードが載っています。
複数の音声を扱うために、
これを以下のようにクラス化しました。
Public Class SoundClass
Public strm As WaveStream
Public player As System.Media.SoundPlayer = Nothing
Public Sub Start()
If player IsNot Nothing Then Exit Sub
player = New System.Media.SoundPlayer(strm)
player.PlayLooping()
End Sub
Public Sub Stop0()
If player IsNot Nothing Then
player.Stop()
player.Dispose()
player = Nothing
End If
End Sub
End Class
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
Dim kkk = New SoundClass With {.strm = New WaveStream(myAssembly.GetManifestResourceStream("WindowsApplication1.test.wav"))}
kkk.Start()
Thread.Sleep(1000)
kkk.Stop0()
Thread.Sleep(1000)
kkk.Start() ’←ここでエラーが発生する
End Class
しかし、一回目の再生はうまくいくのですが、
一度、停止してから再度再生しようとすると
player.PlayLooping()
WAVEヘッダーが壊れています
というエラーが出てうまくいきません。
Public Class SoundClassの中で、
Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
Dim strm As New WaveStream(myAssembly.GetManifestResourceStream("WindowsApplication1.test.wav"))}
の宣言を行うとなぜかうまくいきます。
なぜ、このエラーが発生するのでしょうか?
|
|