1

高度に並列化された C# winforms ソフトウェア (CheckForIllegalCrossThreadCalls) で違法なクロス スレッド コール チェックを再度アクティブにした後、これらの安全でないコールに関するデバッグ例外が大量に発生しました。

たとえば、次のような行です。

flowLayoutPanel1.Controls.Clear();

例外をスローします。

これらの 1 つのライナーを「修正」するために、次のように、flowlayoutpanel を作成/所有するクラス インスタンスから呼び出すだけで済みました。

ownerClassInstance.Invoke((MethodInvoker)delegate { flowLayoutPanel1.Controls.Clear(); });

今、私は次の質問があります

1) CheckForIllegalCrossThreadCalls を使用して心配するのをやめることはできませんか? スレッドの安全でないアクションが原因で問題が発生したことはありません。正直なところ、スレッドの安全でない winforms プログラミングが予測できない動作につながる実世界の例さえ知りません。後で本当の問題に遭遇し、最初から物事をきれいに保とうとするのではないかと心配しています。

2) キャストされたデリゲート (ラムダ?) のこの呼び出しで行を「ラップ」すると、パフォーマンスが大幅に低下しますか? フローレイアウトパネルに 1000 個のオブジェクトを追加した場合のように、これらの追加メソッド呼び出しが私のやり方でスレッドセーフにされた場合、かなり遅くなりますか?

4

0 に答える 0