![C#Async / Await-非同期プログラミングにより、アプリの応答性と速度を向上させます](https://i.ytimg.com/vi/2moh18sh5p4/hqdefault.jpg)
コンテンツ
- 定義-非同期メソッド呼び出しとはどういう意味ですか?
- Microsoft AzureとMicrosoft Cloudの紹介|このガイドでは、クラウドコンピューティングとは何か、Microsoft Azureを使用してクラウドからビジネスを移行および実行する方法を学習します。
- Techopediaによる非同期メソッド呼び出しの説明
定義-非同期メソッド呼び出しとはどういう意味ですか?
非同期メソッド呼び出しは、.NETプログラミングで使用されるメソッドで、処理が完了する直前に呼び出し元に戻り、呼び出し元のスレッドをブロックしません。
アプリケーションが非同期メソッドを呼び出すと、タスクを実行する非同期メソッドの実行と同時に実行できます。非同期メソッドは、メインアプリケーションスレッドとは別のスレッドで実行されます。処理結果は、別のスレッドの別の呼び出しを介して取得されます。
非同期メソッドは、リソースの実行を最適化し、スケーラブルなアプリケーションを実現します。これらは、大きなファイルを開いたり、リモートコンピューターに接続したり、データベースを照会したり、WebサービスやASP.NET Webフォームを呼び出したりするなど、時間のかかるタスクを実行するために使用されます。
非同期メソッド呼び出しは、非同期メソッド呼び出し(AMI)とも呼ばれます。
Microsoft AzureとMicrosoft Cloudの紹介|このガイドでは、クラウドコンピューティングとは何か、Microsoft Azureを使用してクラウドからビジネスを移行および実行する方法を学習します。
Techopediaによる非同期メソッド呼び出しの説明
非同期メソッドは、呼び出しから戻る方法が同期メソッドと異なります。非同期メソッド呼び出しはすぐに戻り、呼び出し側プログラムが他の操作を実行できるようにしますが、同期メソッド呼び出しはメソッドの完了を待ってからプログラムフローを続行します。
.NETフレームワークには非同期インフラストラクチャが組み込まれているため、コードを変更せずに任意のメソッドを非同期的に呼び出すことができます。
.NET Frameworkは、非同期メソッドを実装するための2つの設計パターンを提供します。これは、非同期デリゲート(IASyncResultオブジェクト)とイベントを使用するものです。非同期デリゲートパターンはより複雑で柔軟性があり、さまざまな複雑なプログラミングモデルに適しています。イベントベースのモデルは単純であり、ほとんどの場合に使用する必要があります。
非同期デリゲートパターンでは、デリゲートオブジェクトはBeginInvokeとEndInvokeの2つのメソッドを使用します。 BeginInvokeには、ラップされた関数に似たパラメーターのリストと、2つの追加のオプションパラメーターがあります。 IAsyncResultオブジェクトを返します。 EndInvokeは、IAsyncResultオブジェクトと共に2つのパラメーター(outおよびrefタイプ)を返します。 BeginInvokeは非同期呼び出しの開始に使用され、EndInvokeは非同期呼び出しの結果の取得に使用されます。
イベントベースの非同期パターンは、MethodNameAsyncという名前の1つ以上のメソッドを持つクラスを使用します。このメソッドには、現在のスレッドで実行される対応する同期バージョンがあります。イベントベースのパターンには、MethodNameCompletedイベントとMethodNameAsyncCancelメソッドも含まれる場合があります。このパターンにより、クラスはデリゲートイベントモデルを使用して保留中の非同期操作と通信できます。
非同期メソッドに関連するいくつかのヒントを次に示します。
- 並行性を高めるには、非同期メソッドを避ける必要があります
- 共有オブジェクト参照を渡す際には注意が必要です
- EndXXX(非同期操作の終了時に呼び出される)は、例外を再スローして失敗を回避するために呼び出す必要があります
- 非同期メソッドですべての例外オブジェクトをキャッチして保存することにより、EndXXX呼び出し中に例外を再スローできます
- 長時間実行される非同期操作を開始するユーザーインターフェイスのコントロールは、その目的にのみ必要な場合は無効にする必要があります
- 非同期メソッドは、マルチスレッドと、同期メソッドを使用するよりも効率的であることがわかっている場所を理解して実装する必要があります。