非同期操作

データベース操作の完了にはかなりの時間がかかる場合があります。 ユーザー インターフェイスの応答性を維持するか、要求スレッドをブロックしないようにするには、コマンドが完了するまで同期的に待機するのではなく、非同期データベース メソッドを使用します。

SQL クライアントコード用に、Microsoft.Data.SqlClient NuGet パッケージをインストールしてください。 新しいアプリケーションの場合は、awaitでOpenAsyncとExecuteNonQueryAsync、ExecuteReaderAsyncの各メソッドをExecuteXmlReaderAsyncと共に使用します。 これらのメソッドは、バックグラウンド スレッドを作成しなくても非同期の入出力 (I/O) を実行します。

Microsoft.Data.SqlClient も、このセクションで説明されているコールバック、ウェイトハンドル、ポーリングの各パターンをサポートしています。 BeginExecuteNonQuery、BeginExecuteReader、およびBeginExecuteXmlReaderメソッドは、EndExecuteNonQuery、EndExecuteReader、およびEndExecuteXmlReaderとペアになります。 接続文字列にAsynchronous Processing=trueを追加しないでください。Microsoft.Data.SqlClient では、そのキーワードはサポートされていません。

注

新しいコードでは、タスク ベースの非同期パターンを使用してください。 このセクションの例では、コールバック、待機ハンドル、またはポーリングを必要とするアプリケーションでサポートされている Begin/End パターンを示します。

各接続とコマンドは、処理が完了するまで有効な状態に保ちます。 対応するEnd メソッドを呼び出す際、またはタスクを待機する際は、例外に注意してください。 デスクトップ アプリケーションでは、ユーザー インターフェイス スレッドからのみコントロールを更新します。

このセクションにて

コールバックを使用する Windows アプリケーション 非同期コマンドを安全に実行し、フォームとその内容との対話を別のスレッドから正しく処理する方法を示す例を示します。

待機ハンドルを使用したアプリケーションの ASP.NET 待機ハンドルを使用して、すべてのコマンドの完了時に操作を管理して、ASP.NET ページから複数の同時実行コマンドを実行する方法を示す例を示します。

コンソール アプリケーションでのポーリング ポーリングを使用して、コンソール アプリケーションからの非同期コマンド実行の完了を待機する例を示します。 この技法は、クラス ライブラリまたはユーザー インターフェイスを持たないその他のアプリケーションでも有効です。

こちらも参照ください