3

Windowsフォームが機能しているときにデリゲートクラスを使用して呼び出しを行う場合は、常にInvokeRequiredを使用する必要があります。大丈夫です。しかし、動作中にInvokeReuqiredプロパティを変更したのは誰ですか。この画像を確認してください: 代替テキスト

4

3 に答える 3

6

InvokeRequiredコントロールがtrue作成されたスレッド以外のスレッドからアクセスされた場合、またはfalseそれ以外の場合です。
あなたの質問にもっと直接的に答えるために、それはInvokeRequiredプロパティが特定の時点で「変化する」ということではありません。アクセス元のスレッドに基づいて異なる値を返す可能性があると言った方が正確です。

于 2009-10-16T14:02:03.063 に答える
4

Delegate.BeginInvokeを呼び出しています。button1_ClickこれはSayListeyeEkle、スレッドプールスレッドで呼び出されることを意味します。つまり、 InvokeRequiredtrueであることが完全に正しいことを意味します。UIスレッドで、から直接呼び出した場合は当てはまりません。ListeyeEklebutton1_Click

于 2009-10-16T14:02:07.417 に答える
1

「InvokeRequiredプロパティを変更する」とはどういう意味ですか?真/偽の値が変化しているということですか?trueが返され、BeginInvokeへのデリゲート呼び出しを行った後、デリゲートでは、値がより適切変更されています。重要なのは、コントロールが作成されたスレッドに「切り替える」ことです。コントロールが作成されたスレッド以外のスレッドでInvokeRequiredを含むコード行が実行されると、InvokeRequiredはtrueを返します。コントロールが作成されたのと同じスレッドで実行された場合にのみ、falseが返されます。プロパティには名前が付けられている可能性があります NotOnThreadIWasCreatedIn。これが実際に行われていることのすべてです。InvokeRequiredそれはそれが何のために使われる必要があるかを伝えるために名付けられました...

于 2009-10-16T14:05:22.403 に答える