同期および非同期メソッド呼び出し:
および
Invoke()
効率的なプログラミングの鍵は、同様の方法間の微妙な違いを理解することです。 BeginInvoke()
およびは、2つの一般的な例です。この記事では、それらの違いを調査し、それらの用途と利点を明確にします。
およびInvoke()
:比較分析BeginInvoke()
メソッドは、同時に操作を実行するために、発信者と同じスレッドでメソッドを実行するように設計されています。これは、承認方法が完了する前に呼び出しスレッドが待機することを意味します。
それどころか、Invoke()
非同期操作。別のスレッド(通常、スレッドプールのスレッド)で呼び出されます。 をBeginInvoke()
オブジェクトを返し、コールパーティがコールメソッドの実行ステータスを追跡できるようにすることは注目に値します。
Invoke()
および
BeginInvoke()
の実際の適用
BeginInvoke()
IAsyncResult
および
Invoke()
BeginInvoke()
:同期実行方法とそれが完了するのを待ちます。この方法は、結果をすぐに実行して取得する必要がある場合に適用されます。
Delegate.Invoke()
:非同期実行方法、呼び出しスレッドが完了するのを待たずに実行を続けることを許可します。この方法は、CEOが長い間タスクを実行し、発信者をブロックしたくない場合に非常に有利です。 Delegate.BeginInvoke()
(Windowsウィンドウに適しています):Delegate.Invoke()
:GUIスレッドでメソッドを実行し、完了するのを待ちます。この方法は、GUIスレッドの実行とデータの一貫性を確保するときに適用できます。 Delegate.BeginInvoke()
Control.Invoke()
Control.BeginInvoke()
その他の考慮事項:スレッドオブジェクトと
を使用するのと同等です。どちらの方法でも、個別のスレッドでコードを非同期に実行できます。ただし、通常、は、そのシンプルさと自動スレッドプール管理により、より人気があります。 Control.Invoke()
およびControl.BeginInvoke()
以上がinvoke()vs。begininvoke():同期と非同期メソッド呼び出しをいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。