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

Rispondi quotando
