Momentan habe ich ein komisches Problem, das ich einfach nicht verstehe. Ich habe eine einfache GUI, mit einer Taste & eine Richitbox. Ich habe einen Async-Socket ausgeführt, ich erhalte einige Daten über das Netzwerk, das ich auf die GUI (Richeditbox) drucken möchte. Der asynchrone Socket wird gestartet, wenn der Benutzer auf die Schaltfläche klickt. Also, wenn ich die Netzwerkdaten empfangen nenne ich eine Funktion, die die Daten druckt, hier, wie es aussieht (in form1 Klasse):Windows Forms mit asynchronem Socket; keine Textausgabe
Public Sub AddText(ByVal text As String)
Try
Console.WriteLine(text)
RichTextBox1.AppendText(text)
RichTextBox1.AppendText(vbNewLine)
Catch e As Exception
Console.WriteLine(e.ToString())
End Try
End Sub
Dann einfach ich Form1.AddText(..)
aus meinem Netzwerk-Klasse oder ein Modul (tut es Sache ?). Das Problem ist, dass nichts in der Richeditbox erscheint, obwohl die AddText
Funktion aufgerufen wird, keine Ausnahmen, keine Fehler, einfach nichts. Ich habe mit dem Debugger durchgeschaut, und "text"
enthielt die Daten, die es zu drucken hatte, aber einfach nichts erscheint .. Wer hat eine Idee?
Ich habe es schon probiert, aber dasselbe Ergebnis:/ Privat Delegate Sub dlgUpdate (ByVal Text As String) Sub Updatelog (ByVal Text As String) Wenn RichTextBox1.InvokeRequired = True Then Dim d As New dlgUpdate (AddressOf Updatelog) RichTextBox1.Invoke (d, Text) Else RichTextBox1.AppendText (Text) End If End Sub Hinweis: die Updatelog Funktion funktioniert, wenn ich es aus dem gUI-Thread aufrufen, so dass ich denke, es ist damit verwandt, aber ich sehe nicht, warum es nach der Verwendung von InvokeRequired immer noch nicht funktioniert. –
uh .. das sieht hässlich aus, kann nicht einmal den Code im Kommentar sehen, ich nahm den Code von: http://www.vbdotnetforums.com/asp-net-data-access/19740-how-use-invokerequired .html –
Das mag ein dummer Vorschlag sein, aber wenn der UI-Thread gesperrt ist, könnten Sie immer versuchen, eine Application.DoEvents() nach dem Anhängen des Textes einzuwerfen. – David