2010-12-09 15 views
2

私はこれまでの話題を読んでいますが、動作させることはできません。テキストボックスを別のスレッドのクラスから更新してください

私のアプリケーションのイベントログを作成しようとしています。それは私が "Form2"を開く関数を持っている "Form1"を開くことから始まります。 "Form2"はマルチスレッドTcpListenerを開始します。 "Form1"のテキストボックスを "Form2"からTcpListenerを実行するスレッドに編集するにはどうすればよいですか?また、あなたはそれを別のフォーム/クラスからどのように変更するのでしょうか、それとも同じように行われますか?

例を歓迎するので、私はそれを分解して理解することができます。バックグラウンドスレッドからコントロールを更新

どうもありがとうございました

+0

重複 - この質問への回答を参照してください:http://stackoverflow.com/questions/519233/writing-to-a-textbox-from-another-thread – shf301

答えて

1

は、一般的な問題であり、通常はそれを行うための最も簡単な方法は、BackgroundWorkerのを使用することです。 BackgroundWorkerの使用に関するMSDNチュートリアルのいくつかをチェックしてください。

これは、バックグラウンドタスクを実行しているときや、タスク中またはタスクの最後に更新を行う場合にうまく機能します。しかし、あなたはソケットからの入力を待っているので、少し違ったことをしているようです。その場合、バックグラウンドスレッドが受け取ったイベントをキューに追加してから、タイマーイベントを使用してキューを処理し、更新が必要なコントロールを更新するほうが簡単な場合があります。スレッディングタイマーではなくWindowsフォームタイマーを使用してください。

関連する問題