スレッドの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 はローカルで呼び出してデータを処理できます。