私はプログラミングに非常に慣れていないので、まだ多くの基本を習得する必要があります。しかし、あちこちからの助けを借りて、プログラム全体を作成することができました. ただし、リソースに関してメモリリークが発生したと思います。これもまた新しくて、これを行うには不器用な方法だとほぼ確信しています...
現在、My.Resources に保存されている .wav ファイルを使用するアプリケーションにバックグラウンド ミュージックがあります。オーディオを正常に有効化、無効化、ミュートするための複数の手段を実装しましたが、複数のオーディオ トラックを導入したときに問題が発生しました。プログラムの「設定」領域にある 4 つのバックグラウンド ソング (4 つの .wav リソースとして保存) の間のオプションをエンド ユーザーに提供するという考えです。ソリューションをビルドしてテストすると、すべてが期待どおりにうまく動作します。次に、設定領域でオーディオを別のトラックに変更すると、それも機能します。曲を何度も変更すると問題が発生し、OutOfMemory エラーが発生します。
何が起こっているのか理解できたと思います。リソースは、ユーザーが選択するたびにメモリに追加されますが、-say- song2 が選択されている場合にメモリから -say- song1 を削除する方法がわかりません。オーディオの選択と再生を処理するコードは次のとおりです。
(プログラムは「%chkbox」と呼ばれるラジオ ボタンを使用し、このコードを実行する前にユーザーが「savebtn」を押す必要があります。) Visual Basics 2012 .net 4.5 の使用
'Save and start songs.
If DjErhain_Mistychkbox.Checked = True Then
My.Settings.AudioDJErhain_UWBeats_Maniac = 0
My.Settings.Save()
My.Settings.AudioDjErhain_Misty = 1
My.Settings.Save()
My.Settings.AudioMachinimaSound_Exigence = 0
My.Settings.Save()
My.Settings.AudioSimplex_Memories_master = 0
My.Settings.Save()
My.Computer.Audio.Play(My.Resources.DjErhain_Misty, AudioPlayMode.BackgroundLoop)
ElseIf DJErhain_UWBeats_Maniacckbox.Checked = True Then
My.Settings.AudioDjErhain_Misty = 0
My.Settings.Save()
My.Settings.AudioDJErhain_UWBeats_Maniac = 1
My.Settings.Save()
My.Settings.AudioMachinimaSound_Exigence = 0
My.Settings.Save()
My.Settings.AudioSimplex_Memories_master = 0
My.Settings.Save()
My.Computer.Audio.Play(My.Resources.DJErhain_UWBeats_Maniac, AudioPlayMode.BackgroundLoop)
ElseIf MachinimaSound_Exigencechckbox.Checked = True Then
My.Settings.AudioMachinimaSound_Exigence = 1
My.Settings.Save()
My.Settings.AudioDJErhain_UWBeats_Maniac = 0
My.Settings.Save()
My.Settings.AudioDjErhain_Misty = 0
My.Settings.Save()
My.Settings.AudioSimplex_Memories_master = 0
My.Settings.Save()
My.Computer.Audio.Play(My.Resources.MachinimaSound_Exigence, AudioPlayMode.BackgroundLoop)
ElseIf Simplex_Memories_masterchckbox.Checked = True Then
My.Settings.AudioSimplex_Memories_master = 1
My.Settings.Save()
My.Settings.AudioDJErhain_UWBeats_Maniac = 0
My.Settings.Save()
My.Settings.AudioDjErhain_Misty = 0
My.Settings.Save()
My.Settings.AudioMachinimaSound_Exigence = 0
My.Settings.Save()
My.Computer.Audio.Play(My.Resources.Simplex_Memories_master, AudioPlayMode.BackgroundLoop)
Else
End If