次の方法で共有


非同期操作

ADO.NET のダウンロード

コマンドの実行など、データベースでの一部の操作は、完了までに長時間かかることがあります。 このような場合、シングルスレッド アプリケーションでは、他の操作をブロックしなければならず、そのコマンドの完了を待ってから独自の操作を続行する必要があります。 これに対して、長時間にわたる操作をバックグラウンド スレッドに割り当てることができれば、フォアグラウンド スレッドがアクティブなまま操作を続行できます。 たとえば、Windows アプリケーションでは、操作を実行中のユーザー インターフェイス スレッドの応答性を維持しながら、時間のかかる操作をバックグラウンド スレッドに委任することができます。

.NET には、開発者がバックグラウンド スレッドを利用し、ユーザー インターフェイスや優先順位の高いスレッドを解放してその SqlCommand クラスの他の操作を完了するために使用できる、標準の非同期デザイン パターンがいくつか用意されています。 特に、BeginExecuteNonQueryBeginExecuteReader、および BeginExecuteXmlReader メソッドと、EndExecuteNonQueryEndExecuteReader、および EndExecuteXmlReader メソッドとのペアによって、非同期動作がサポートされています。

Note

非同期プログラミングは .NET のコアとなる機能です。 開発者が使用できるさまざまな非同期技法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。

ADO.NET 機能で非同期技法を使用しても特別な考慮事項は追加されませんが、マルチスレッド アプリケーションを作成する利点と落とし穴に注意することが重要です。 このセクションに示す例は、マルチスレッド機能を組み込むアプリケーションを構築する際に考慮すべき重要な問題を提示しています。

このセクションの内容

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

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

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

次のステップ