現在、私は理解できない奇妙な問題を抱えています。私は、1つのボタン& 1つのricheditboxと、簡単なGUIを持っています。私は非同期ソケットを実行している、私はgui(richeditbox)に印刷したいネットワーク上のいくつかのデータを受信しています。非同期ソケットは、ユーザーがボタンを押したときに開始されます。私は、ネットワークデータを受信したときだから私はそれが(Form1のクラスで)のように見えるここでどのように、データを印刷する機能を呼び出す:非同期ソケットを使用するWindowsフォーム。テキスト出力なし
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
その後、私は単に私のネットワーククラスまたはモジュール(それは関係ありませんからForm1.AddText(..)
を行います?)。問題は、AddText
関数が呼び出されているにもかかわらず、例外もエラーもなく単に何も表示されなくても、richeditboxに何も表示されないことです。私はデバッガでそれを見て、"text"
には印刷しなければならなかったデータが含まれていましたが、単純に何も表示されません。誰でもアイデアはありますか?
dlgUpdate(のAddressOf updateLog) RichTextBox1.Invoke(D、テキスト) エルス RichTextBox1.AppendText(テキスト) END IF End Subの 注:私は、GUIスレッドからそれを呼び出す場合updateLog機能が動作しますので、私はそれを推測それに関連していますが、InvokeRequiredを使用した後もまだ動作しない理由はわかりません。 –
uh ..それは醜く見えます、コメントでコードを見ることができない、私はコードを取ったから:http://www.vbdotnetforums.com/asp-net-data-access/19740-how-use-invokerequired .html –
これは暗い提案かもしれませんが、UIスレッドがロックされている場合は、テキストを追加した後でApplication.DoEvents()を投げてみることができます。 – David