Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB Net] thread.....sono agli inizi!!!!
Forum - C# / VB.NET - [VB Net] thread.....sono agli inizi!!!!

Avatar
mb72 (Normal User)
Newbie


Messaggi: 11
Iscritto: 23/12/2007

Segnala al moderatore
Postato alle 23:12
Giovedì, 05/08/2010
volevo creare un semplice thread:
una form con un pulsante ed una textbox.
nella form.load faccio partire il thread che deve in continuazione scrivere nella text box una volta aloha ed una volta ciaociao.....
il problema e' che viene generato l'errore in esecuzione Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'TextBox1' da un thread diverso da quello da cui è stata eseguita la creazione.

questo e' il codice sorgente che ho scritto.dove ho sbagliato????

Imports System.Threading


Public Class Form1
    Private mautread As Thread
    Public flag As Integer = 0


    Private Sub MioThread()
        
        Do
            If flag = 0 Then
                TextBox1.Text = "aloha"

                flag = 1
            ElseIf flag = 1 Then
                TextBox1.Text = "ciaociao"
                flag = 0
            End If

            Thread.Sleep(100)

        Loop

    End Sub

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

        mautread = New Thread(AddressOf MioThread)
        mautread.IsBackground = True
        mautread.Start()


    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        MsgBox("premuto pulsante !!!!!!!")
    End Sub

   End Class

PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 23:19
Giovedì, 05/08/2010
l'errore è causato dal fatto che non puoi modificare un componente grafico presente sulla form da un thread diverso da quello che ha generato tale componente.

ho visto il tuo codice e ti sucggerisco di usare un timer di interval 100 al posto di un thread separato che tra l'altro stoppi per 100 millisecondi


Il software è come il sesso, è meglio quando è libero.
Linus Torvalds, Conferenza della Free Software Foundation, 1996 (attribuito)

Non provare mai a spiegare il computer a un profano. È più facile spiegare il sesso a una vergine.
Robert Anson Heinle
PM Quote
Avatar
mb72 (Normal User)
Newbie


Messaggi: 11
Iscritto: 23/12/2007

Segnala al moderatore
Postato alle 23:31
Giovedì, 05/08/2010
si, ho messo sleep 100 al posto di 1000.....

Si, al posto del thread potevo usare un timer; quindi se volessi invece cambiare le propieta' grafiche di un oggetto, come avrei potuto farlo con un thread???

PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 23:55
Giovedì, 05/08/2010
in questa discussione trovi spiegato tutto:
http://forum.masterdrive.it/visual-basic-net-18/eccezione- ...


Il software è come il sesso, è meglio quando è libero.
Linus Torvalds, Conferenza della Free Software Foundation, 1996 (attribuito)

Non provare mai a spiegare il computer a un profano. È più facile spiegare il sesso a una vergine.
Robert Anson Heinle
PM Quote