スレッドのGUIの問題に悩まされています。スレッドにコールバックを使用させてコードを実行させる(そして失敗させる)代わりに、メインのフォーム/スレッドがデータを受信して処理を行うようにFIFOを作成するにはどうすればよいですか?
問題のGUIの問題-> SelectedNodeのスレッド例外=.Nodes[0]
スレッドのGUIの問題に悩まされています。スレッドにコールバックを使用させてコードを実行させる(そして失敗させる)代わりに、メインのフォーム/スレッドがデータを受信して処理を行うようにFIFOを作成するにはどうすればよいですか?
問題のGUIの問題-> SelectedNodeのスレッド例外=.Nodes[0]
同期コンテキストを使用して、UIスレッドをPost/ Send「呼び出し」ます。
Winform コントロールの BeginInvoke は、スレッド間で呼び出しを行うために、FIFO であるウィンドウのメッセージ キューを使用します。
メイン フォーム (または任意のコントロール) へのハンドルがある場合は、Control.Invoke/を使用できますControl.BeginInvoke。
インスタンスを渡したくない場合Controlは、外部コードにISynchronizeInvokeインスタンスを与えることができます (どのコントロールでもそれを行うか、呼び出し元のキャストを防ぐためにaをラップする独自のクラスを記述します)。Control次に、呼び出し元はこれを使用してメソッドを実行できます。
最後に、イベントの使用を検討してください。実行中のコードは、UI が処理するイベントを発生させます。Control.Invokeその後、UI はローカルで呼び出してデータを処理できます。