Есть ли способ остановить возникновение исключения «WaveStillPlaying, вызывающего waveOutWrite»?

Я пытаюсь создать музыкальный проигрыватель с такими визуализациями, как представление волн, представление спектра и т. д. При отладке программы я получаю исключение «WaveStillPlaying Calling waveOutWrite».

Я проверил весь код на наличие «MusicList_SelectedIndexChanged». Пытался остановить воспроизведение WaveOut и удалил его. Затем определил AudioFileReader, инициализировал с его помощью WaveOut и начал воспроизведение. Но все равно выбрасываю то же исключение. Как я могу избежать возникновения исключения?

Это код для инициализации и воспроизведения WaveStream:

      wO.Stop()
            MeteringProvider = Nothing
            SampleProvider = Nothing

            wO.Dispose()

            Try

                Dim file As TagLib.File = TagLib.File.Create(MusicPaths(MusicList.SelectedIndex))

                If (file.Tag.Pictures.Length > 0) Then
                    Dim bin = CType(file.Tag.Pictures(0).Data.Data, Byte())
                    Dim img As Drawing.Bitmap = System.Drawing.Bitmap.FromStream(New System.IO.MemoryStream(bin)).GetThumbnailImage(2500, 2500, Nothing, IntPtr.Zero)
                    Dim ico As Icon = System.Drawing.Icon.FromHandle(img.GetHicon())
                    Me.Icon = ico
                Else
                    Me.Icon = My.Resources.ICON
                End If



                Me.Text = "Music Player - " & MusicList.SelectedItem.ToString
            Catch ex As Exception
                Me.Icon = My.Resources.ICON
                Me.Text = "Music Player - " & MusicList.SelectedItem.ToString
            End Try



            If (MusicPaths(MusicList.SelectedIndex).EndsWith(".mp3")) Then
                afr = New Mp3FileReader(MusicPaths(MusicList.SelectedIndex))
            ElseIf (MusicPaths(MusicList.SelectedIndex).EndsWith(".wav")) Then
                afr = New WaveFileReader(MusicPaths(MusicList.SelectedIndex))
            ElseIf (MusicPaths(MusicList.SelectedIndex).EndsWith(".aiff")) Then
                afr = New AiffFileReader(MusicPaths(MusicList.SelectedIndex))
            End If

            MiniPlayerMode.Visible = True
            MiniPlayerMode.Enabled = True

            wO = New WaveOut()

            SampleRate = afr.WaveFormat.SampleRate



            MusicController1.MusicNumber = MusicList.SelectedIndex + 1

            MusicController1.ControlCalled = "Playback_PLAY"
            MusicController1.PlayPause.Text = ";"

            MusicController1.AudioStream = afr

            Minipanel.WaveStream = rawWave

            If (MusicList.SelectedItem.ToString().Length < 56) Then
                MusicName.Text = MusicList.SelectedItem
                Minipanel.MusicName = MusicName.Text
            Else
                Dim str As String = ""
                For C As Int32 = 0 To MusicList.SelectedItem.ToString.Length

                    If (C < 56) Then
                        str += MusicList.SelectedItem.ToString(C)
                    End If
                Next

                MusicName.Text = str & "..."

            End If

            Minipanel.MusicName = MusicName.Text


            rawWave = New RawSourceWaveStream(New IO.MemoryStream(waveData0), afr.WaveFormat) 'Using RawSourceWaveStream To Change SampleRate



            SampleProvider = New NAudio.Wave.SampleProviders.SampleChannel(rawWave)
            MeteringProvider = New NAudio.Wave.SampleProviders.MeteringSampleProvider(SampleProvider)


            wO.Init(rawWave)

            If (Spectrum_Viewer1.WaveStream IsNot Nothing) Then Spectrum_Viewer1.WaveStream.Dispose()

            Spectrum_Viewer1.WaveStream = rawWave
            Spectrum_Viewer1.StreamPosition = 0


            rawWave.Position = 0
            bfr = 0
            TrackBar1.Value = 0


            wO.Play()

0 ответов

Другие вопросы по тегам