Control.InvokeRequired プロパティとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Control.InvokeRequired プロパティの意味・解説 

Control.InvokeRequired プロパティ

呼び出し元がコントロール作成されスレッド異なスレッド上にあるため、コントロールに対してメソッド呼び出し実行するときに、呼び出し元で invoke メソッド呼び出す必要があるかどうかを示す値を取得します

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

解説解説

Windows フォーム内のコントロールは、特定のスレッドバインドされているため、スレッド セーフではありません。したがって異なスレッドからコントロールメソッド呼び出す場合は、コントロールinvoke メソッド使用して適切なスレッドへの呼び出しマーシャリングする必要があります。このプロパティ使用すると、invoke メソッド呼び出す必要があるかどうか確認できるため、どのスレッドコントロール所有しているかわからない場合役立ちます

メモメモ

InvokeRequired プロパティ以外に、呼び出しに対してスレッド セーフである 4 つメソッドInvoke、BeginInvoke、EndInvoke、および CreateGraphics がコントロールありますその他のすべてのメソッド呼び出しについては、異なスレッドから呼び出すときは、これらの invoke メソッド1 つ使用する必要があります

コントロールハンドルがまだ存在しない場合InvokeRequired メソッドコントロールの親チェイン検索しウィンドウ ハンドルを持つコントロールまたはフォームを見つけます適切なハンドルが見つからない場合InvokeRequired メソッドfalse返します

つまり、Invoke必須ではない (同じスレッド呼び出しが行われる) 場合、またはコントロール異なスレッド作成されるが、コントロールハンドルがまだ作成されていない場合InvokeRequiredfalse返す可能性あります

コントロールハンドルがまだ作成されていない場合コントロールプロパティメソッド、またはイベント呼び出さないください。これにより、コントロールハンドルバックグラウンド スレッド作成されメッセージ ポンプのないスレッド上でコントロール分離されて、アプリケーション不安定になる可能性あります

バックグラウンド スレッドInvokeRequiredfalse返す場合、IsHandleCreated の値を確認する方法でも、この状態が発生するのを回避できますコントロール ハンドルがまだ作成されていない場合は、コントロール ハンドル作成されるまで待機してから、Invoke または BeginInvoke呼び出す必要があります通常、これが発生するのは、アプリケーションメイン フォーム表示される前または Application.Run呼び出される前にメイン フォームコンストラクタバックグラウンド スレッド作成される場合です (たとえば、Application.Run(new MainForm()))。

1 つ解決策としては、フォームハンドル作成されるまで待機してから、バックグラウンド スレッド開始しますHandle プロパティ呼び出してハンドル強制的に作成するか、Load イベントバックグラウンド プロセス開始するまで待機します。

より優れた解決策としては、スレッド間のマーシャリングではなく、SynchronizationContext によって返される SynchronizationContext使用します

マルチスレッド処理されWindows フォーム コントロール詳細については、「方法 : バックグラウンド スレッド使用してファイル検索する」を参照してください

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Control クラス
Control メンバ
System.Windows.Forms 名前空間
Invoke
InvokeGotFocus
InvokeLostFocus
InvokeOnClick
InvokePaint
InvokePaintBackground


このページでは「.NET Framework クラス ライブラリ リファレンス」からControl.InvokeRequired プロパティを検索した結果を表示しています。
Weblioに収録されているすべての辞書からControl.InvokeRequired プロパティを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からControl.InvokeRequired プロパティを検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

Control.InvokeRequired プロパティのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Control.InvokeRequired プロパティのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS