La llamada de función solo funciona cuando se incluye MessageBox.Show ()?

En mi proyecto actual tengo un reproductor de audio hecho por mí mismo que se opera a través de mi función musictimer (). A continuación hay un sub que le ordena al reproductor de audio que pase a la siguiente canción cuando alguien ha hecho clic en una imagen. Esto funciona perfectamente.

Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox4.Click
    If (ListBox1.Items.Count - 1 > songBeingPlayed) Then
        musictimer("next")
    Else
        musictimer("stop")
    End If
End Sub

Debajo hay un sub que ordena al jugador que toque la siguiente canción cuando una canción termina de reproducirse. Este sub también funciona pero solo cuando tengo la línea MessageBox.Show ("blabla") allí. De lo contrario, simplemente ignora el musictimer ("siguiente"). Obviamente, es bastante molesto tener mensajes emergentes todo el tiempo, así que quiero que desaparezca. ¿Alguien sabe qué está pasando? No tengo ni idea

Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As System.Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange
    If AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped Then
        musictimer("next")
        MessageBox.Show("blabla")
    End If
End Sub

Mi función musictimer muy desordenado.

Function musictimer(ByVal action)
    If action Is "initial" Then
        TextBox1.Text = "0:00"
        Timer1.Stop()
        secondsCounter = 1
        doubledigitsecondCounter = 0
        minuteCounter = 0
    End If

    If action Is "reset" Then
        TextBox1.Text = "0:00"
        Timer1.Stop()
        secondsCounter = 1
        doubledigitsecondCounter = 0
        minuteCounter = 0
        Me.AxWindowsMediaPlayer1.URL = ""
        changePlayButton("play")
    End If

    If action Is "start" Then
        If (ListBox1.Items.Count > 0) Then
            Me.AxWindowsMediaPlayer1.URL = directoryPath + listboxpl(songBeingPlayed)
            AxWindowsMediaPlayer1.Ctlcontrols.play()
            Timer1.Start()
            changePlayButton("pause")
        End If
    End If

    If action Is "pause" Then
        Timer1.Stop()
        AxWindowsMediaPlayer1.Ctlcontrols.pause()
        changePlayButton("play")
    End If

    If action Is "next" Then
        If (ListBox1.Items.Count - 1 > songBeingPlayed) Then
            songBeingPlayed += 1
            musictimer("reset")
            musictimer("start")
            changePlayButton("pause")
        Else
            musictimer("pause")
        End If
    End If

    If action Is "previous" Then
        If (songBeingPlayed > 0) Then
            songBeingPlayed -= 1
            musictimer("reset")
            musictimer("start")
        End If
    End If
End Function

Respuestas a la pregunta(1)

Su respuesta a la pregunta