ネットワーク経由で情報を受信して処理するサーバー アプリケーションがあります。サーバーはマルチスレッドであり、一度に複数のソケットを処理します。スレッドは、対応するコールバック関数によって連鎖された BeginInvoke および EndInvoke スタイルのメソッドを介して、私の制御なしで作成されます。
メイン GUI に加えて、現在接続されているソケットを説明するアイテムが取り込まれた ListBox アイテムを表示するフォームを作成しようとしています。したがって、私が基本的にやろうとしているのは、適切なコールバック関数が実行されているスレッドから、Add() 関数を使用して ListBox にアイテムを追加することです。Controls プロパティを介してフォーム コントロールにアクセスしています - IE:
(ListBox)c.Controls["listBox1"].Items.Add();
当然のことながら、関数を呼び出すだけではありません。ここと Web で見つけたスレッド間で通信するMethodInvoker
方法delegate
をいくつか試しました。私のコントロールが作成されたスレッド以外のスレッドからアクセスされたことを示す同じ例外。Invoke()
BeginInvoke()
何かご意見は?