Threadübergreifung

Impi2k

Mitglied
Hallo Community, ich setze mal wieder auf euch :) ( Ich benutze VB.NET )

Mein Problem:
Mein tcpListener bekommt einen String von meinem Clienten geschickt, läuft alles klasse!
Der String soll jedoch jetzt in einer RichTextBox in Form1 ( der Listener läuft in einem BackgroundProcess ) dargestellt werden.
Jetzt gibt allerdings meine Exeptionmeldung aus, dass dieser Vorgang "threadübergreifend" wäre da die TextBox in einem anderen Thread liegt.

Meine Frage:
Wie kann ich zum "Hauptthread" wechseln und den String in die TextBox schreiben bzw. dann diesen Hauptthread wieder verlassen und den BackgroundProcess fortsetzen?

Anhang:
Die Funktion die im BackgroundProcess aufgerufen wird:
Code:
Function Schreiben(ByVal msg As String) As String
        If msg = Me.RichTextBox1.Text Then
        Else
            Me.RichTextBox1.Text = msg
            MsgBox("Neue Nachricht!", MsgBoxStyle.OkOnly, "Neue Nachricht!")
        End If
        Return msg
    End Function

Vielen Dank im Vorraus

Impi


P.S.: :google: war nicht mein Freund und :google: hat mich auch nicht weiter gebracht.
 
Hat sich erledigt!

Habe es so gelöst:

Stelle im Backgroundworker
Code:
[...]
Dim clientdata As String = Encoding.ASCII.GetString(bytes)
SetText(clientdata)
[...]

Delegate von Sub SetText
Code:
Public Class Form1
    Inherits Form
    Delegate Sub SetTextCallback(ByVal [text] As String)
[...]

Und SetText
Code:
Private Sub SetText(ByVal [text] As String)
        If Me.RichTextBox1.InvokeRequired Then
            Dim d As New SetTextCallback(AddressOf SetText)
            Me.Invoke(d, New Object() {[text]})
        Else
            Me.RichTextBox1.Text = [text]
        End If
    End Sub

Danke nochmal an Norbert der hat mir per ICQ den Tipp gegeben :)

Quelle: http://msdn2.microsoft.com/en-us/library/ms171728.aspx
 

Neue Beiträge

Zurück