1

スレッドのGUIの問題に悩まされています。スレッドにコールバックを使用させてコードを実行させる(そして失敗させる)代わりに、メインのフォーム/スレッドがデータを受信して​​処理を行うようにFIFOを作成するにはどうすればよいですか?

問題のGUIの問題-> SelectedNodeのスレッド例外=.Nodes[0]

4

3 に答える 3

2

同期コンテキストを使用して、UIスレッドをPost/ Send「呼び出し」ます。

于 2009-04-08T10:24:33.637 に答える
1

Winform コントロールの BeginInvoke は、スレッド間で呼び出しを行うために、FIFO であるウィンドウのメッセージ キューを使用します。

于 2009-04-08T10:33:12.197 に答える
0

メイン フォーム (または任意のコントロール) へのハンドルがある場合は、Control.Invoke/を使用できますControl.BeginInvoke

インスタンスを渡したくない場合Controlは、外部コードにISynchronizeInvokeインスタンスを与えることができます (どのコントロールでもそれを行うか、呼び出し元のキャストを防ぐためにaをラップする独自のクラスを記述します)。Control次に、呼び出し元はこれを使用してメソッドを実行できます。

最後に、イベントの使用を検討してください。実行中のコードは、UI が処理するイベントを発生させます。Control.Invokeその後、UI はローカルで呼び出してデータを処理できます。

于 2009-04-08T10:34:36.810 に答える