5

イメージを更新しようとすると、このエラーが発生しました。クロススレッドの更新でしたが、.Invoke() を使用したので、問題ないはずです。

4

2 に答える 2

6

(自分の質問への回答、他の人のため、および将来の参考のために)

これは、コントロールがまだロード/表示されていない場合、InvokeRequired が常に false を返すためだと思います (まだ完全にはわかりません) 現時点ではうまくいくと思われる回避策を実行しました。これは、次のように、作成者で関連するコントロールのハンドルを単純に参照することです。

var x = this.Handle; 

( http://ikriv.com:8765/en/prog/info/dotnet/MysteriousHang.html - down?キャッシュ バージョンを参照)

(関連する質問:ボイラー プレートのコードの置き換え - このコードに問題はありますか? )

于 2008-10-29T07:42:09.797 に答える
3

ハンドルがまだ存在しない場合は、コントロールをサブクラス化してCreateHandle;を呼び出すことで強制できます。ただし、より大きな問題は、ロードされていないフォームで何かをしている理由です。個人的には、このような操作は Load の後にのみ開始します。

于 2008-10-29T08:14:24.523 に答える