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