3

C#Windows.Formsを使用して、メソッドInvalidate()、Refresh()などをメイン/ GUIスレッドで実行する必要がありますか(Invoke / BeginInvokeが必要)?Charting.Chartオブジェクトのポイントの追加/削除やシリーズの色の変更など、GUIオブジェクトのメンバーを変更するのはどうですか?

これらの変更のいくつかは問題なくワーカースレッドで発生していますが(それで問題ないと思いますか?)、GUIスレッドで明示的に必要な変更と、オブジェクトで発生する可能性のある変更を区別しようとしています。ワーカースレッド。この主題に関するガイダンスへのリンクまたは本の参照を誰かが持っていますか?

4

3 に答える 3

4

一般に、GUI要素へのすべての変更はUIスレッドで行う必要があると通常想定する必要があります。

多くの場合、バックグラウンドスレッドでの変更はテスト中に機能しますが、デプロイ後に機能しなくなります。一般に、特に文書化されていない限り、すべてがUIスレッド上にあると想定する方がはるかに安全です。

于 2011-04-05T16:17:52.503 に答える
1

ワーカースレッドでWinFormsコントロールを操作する同期メソッド呼び出しを行うことはできません。

「ポイントの追加/削除」が何を指しているのか、またはCharting.Chartクラスが何を指しているのかわかりません。このクラスは、GUIスレッドの呼び出しを独自にカプセル化する場合があります。

一般的に、コントロールのサイズ、テキスト、背景色、またはその他のプロパティを変更する場合は、Invoke/BeginInvokeを使用する必要があります。

于 2011-04-05T16:18:22.100 に答える
-1

これにより、 Control.InvokeRequiredが通知されます。

于 2011-04-05T16:17:22.610 に答える