非同期操作 (ADO.NET)
更新 : November 2007
コマンドの実行など、データベースでの一部の操作は、完了までに長時間かかることがあります。そのような場合、シングルスレッドのアプリケーションでは、他の操作をブロックして、コマンドが終了するまで待機しなければ操作を続行できません。これに対して、長時間にわたる操作をバックグラウンド スレッドに割り当てることができれば、フォアグラウンド スレッドがアクティブなまま操作を続行できます。たとえば、Windows アプリケーションでは、操作を実行中のユーザー インターフェイス スレッドの応答性を維持しながら、時間のかかる操作をバックグラウンド スレッドに委任することができます。
.NET Framework では、複数の標準的な非同期デザイン パターンが用意されており、バックグラウンド スレッドを利用して、その他の操作を完了するためにユーザー インターフェイスまたは優先順位の高いスレッドを解放できます。ADO.NET では、SqlCommand クラスでこれらと同じデザイン パターンがサポートされています。特に、BeginExecuteNonQuery、BeginExecuteReader、および BeginExecuteXmlReader メソッドと、EndExecuteNonQuery、EndExecuteReader、および EndExecuteXmlReader メソッドとのペアによって、非同期動作がサポートされています。
これらのメソッドは、Microsoft Windows XP および Windows 2000 でのみサポートされています。Windows 98 または Windows ME ではサポートされていません。
メモ : |
---|
非同期プログラミングは .NET Framework の中心的な機能であり、ADO.NET では標準のデザイン パターンが活用されます。開発者が利用できるさまざまな非同期技法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。 |
ADO.NET 機能での非同期技法の使用に伴う特別な考慮事項はありませんが、非同期機能は、.NET Framework のその他の領域よりも ADO.NET で使用する場合が多いと思われます。マルチスレッドのアプリケーションは、その利点と問題点を認識した上で作成することが重要です。このセクションに示す例は、マルチスレッド機能を組み込むアプリケーションを構築する際に考慮すべき重要な問題を提示しています。
このセクションの内容
コールバックを使用した Windows アプリケーション (ADO.NET)
この例では、非同期コマンドを安全に実行し、異なるスレッドのフォームと内容との対話を正しく処理する方法を示します。待機ハンドルを使用した ASP.NET アプリケーション (ADO.NET)
この例では、ASP.NET ページから複数の同時実行コマンドを実行し、すべてのコマンドの終了時に Wait ハンドルを使用して操作を管理する方法を示します。コンソール アプリケーションでのポーリング (ADO.NET)
この例では、ポーリングを使用して非同期コマンドの実行をコンソール アプリケーションで待機する方法を示します。この技法は、クラス ライブラリまたはユーザー インターフェイスを持たないその他のアプリケーションでも有効です。