Ho due thread "t" e "t2" che partono (ma l'applicazione poi dovrebbe funzionare ugualmente aggiungendone 3 o più) cliccando i rispettivi bottoni (uno per ogni thread)
il bottone di chiusura è unico, ed è impostato per chiudere il thread corrente
dato che non voglio chiudere il thread quando il controllo è all'applicazione principale (il form) , allora ho inserito un controllo con equals() affinche la chiusura avvenga solo se il controllo ce lo ha o il thread t o il thread t2

tuttavia ce qualcosa che non va nella chiusura del/dei thread perchè non lo chiude

cosa sbaglio: la condizione dell'if?

codice:
Public Class Form1

    Dim t As Threading.Thread
    Dim t2 As Threading.Thread
    Dim ListBox2 As ListBox

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        CheckForIllegalCrossThreadCalls = False

        ListBox2 = New ListBox

        With ListBox2
            .Location = New System.Drawing.Point(10, 80)
            .Size() = New System.Drawing.Size(50, 121)
        End With
        ListBox2.Visible = True
        Me.Controls.Add(ListBox2)

    End Sub


    'sub che crea un loop infinito
    Private Sub LoopInfinito()

        Dim i As Int32 = 0
        Do While True

            Dim j As Double = 0
            For j = 0 To 100000000
                j += 1
                j -= 1
            Next
            ListBox2.Items.Add("x" & i)
            i += 1
            'creo delle pause tra un incremento e l'altro
            Threading.Thread.CurrentThread.Sleep(3000)
        Loop

    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        If Not Threading.Thread.CurrentThread.Equals(t) And _
            Not Threading.Thread.CurrentThread.Equals(t2) Then
            'MsgBox("Retry")
        Else
            Threading.Thread.CurrentThread.Abort()
        End If


    End Sub



    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

        t = New Threading.Thread(AddressOf Me.LoopInfinito)
        t.Start()

    End Sub


    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

        t2 = New Threading.Thread(AddressOf Me.LoopInfinito)
        t2.Start()

    End Sub


End Class