L'ho già fatto impostando i riferimenti, non da codice, dunque: dovrebbe essere la stessa cosa.
Ora dichiariamo il thread, nella sezione proprietà del form...
Public Class Form1
Private mioThread As Thread
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("questo è il thread principale")
End Sub
End Class
Dopo la dichiarazione, l'istanziazione del thread con l'istruzione New.
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load mioThread = New Thread(AddressOf CompitoDelThread) mioThread.IsBackground = True mioThread.Start() End Subche fa riferimento al "compito del thread", una semplice Sub aggiunta alla classe Form1:
Private Sub CompitoDelThread() Dim contatore As Integer = 0 Do If contatore > 10 Then MsgBox("arrivato!") End If contatore = contatore + 1 Thread.Sleep(1000) Loop End SubEd ecco: dopo 10 secondi, quando il valore del numero che ho predisposto nel "compito del thread" ha raggiunto l'opportuno valore, arriva la seconda MessageBox.
in pratica, funziona!
Una simpatica variante, mescolando le nozioni che ho ripassato sulla sintesi vocale, facendosi avvertire dalla voce della bella Silviotta ("ScanSoft Silvia_Dri40_16kHz") quando il numero aumentato in sottofondo dal mio secondo thread raggiunge il valore voluto:
Public Class Form1 Private voce As New SpeechSynthesizer Private mioThread As Thread Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load voce.SelectVoice("ScanSoft Silvia_Dri40_16kHz") mioThread = New Thread(AddressOf CompitoDelThread) mioThread.IsBackground = True mioThread.Start() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("questo è il thread principale") End Sub Private Sub CompitoDelThread() Dim contatore As Integer = 0 Do If contatore > 20 Then voce.Speak("Siamo arrivati al numero giusto, stronzo!") End If contatore = contatore + 1 Thread.Sleep(1000) Loop End Sub End Class...e funziona ancora!
Nessun commento:
Posta un commento