インターネット上の非同期モニカ
更新 : 2007 年 11 月
インターネットはネットワーク アクセスが遅いため、アプリケーションのデザインに工夫が必要です。つまり、アプリケーションからネットワークに非同期でアクセスして、ユーザー インターフェイスの機能が停止しないようにアプリケーションをデザインします。MFC の CAsyncMonikerFile クラスを使用すると、ファイルを非同期でダウンロードできます。
非同期モニカを使用すると、COM アプリケーションを拡張してインターネットを通じてデータを非同期的にダウンロードし、ビットマップや VRML オブジェクトなどの大きなオブジェクトを少しずつ描画できます。また、ユーザー インターフェイスの応答を中断することなく、インターネット上の ActiveX コントロール プロパティまたはファイルをダウンロードできます。
非同期モニカの利点
非同期モニカの利点は、次のとおりです。
ユーザー インターフェイスを妨げることなく、コードやファイルをダウンロードできます。
ユーザー インターフェイスを妨げることなく、ActiveX コントロールのプロパティをダウンロードできます。
ダウンロードの進行状況に関する通知を受け取ることができます。
進行状況および準備状況の情報を追跡できます。
進行状況のステータスをユーザーに提供できます。
ユーザーはダウンロードをいつでもキャンセルできます。
非同期モニカの MFC クラス
CAsyncMonikerFile は、CMonikerFile の派生クラスであり、CMonikerFile は COleStreamFile の派生クラスです。COleStreamFile オブジェクトは、データのストリームを表します。CMonikerFile オブジェクトは、IMoniker を使用してデータを取得します。CAsyncMonikerFile オブジェクトは、IMoniker を使用して非同期でデータを取得できます。
通常、インターネット対応のアプリケーションおよび ActiveX コントロールでは、非同期モニカを使用して、ファイル転送中でもユーザー インターフェイスが応答できるようにします。主な例として、CDataPathProperty を使用した ActiveX コントロールの非同期プロパティが用意されています。
ActiveX コントロールのデータ パスを表す MFC クラス
MFC の CDataPathProperty クラスおよび CCachedDataPathProperty クラスは、非同期で読み込むことができる ActiveX コントロールのプロパティを実装します。非同期プロパティは、同期インターフェイスの初期手順終了後に読み込まれます。非同期の ActiveX コントロールは、長いプロパティの交換中にコールバックを繰り返し呼び出すことによって、新しいデータが取得できたことを示します。
CDataPathProperty は CAsyncMonikerFile の派生クラスです。CCachedDataPathProperty は CDataPathProperty の派生クラスです。ActiveX コントロールに非同期プロパティを実装するには、CDataPathProperty または CCachedDataPathProperty からクラスを派生し、OnDataAvailable およびほかの受け取りたい通知をオーバーライドします。
非同期モニカを使用してファイルをダウンロードするには
CAsyncMonikerFile の派生クラスを宣言します。
OnDataAvailable をオーバーライドしてデータを表示します。
OnProgress、OnStartBinding、OnStopBinding など、その他のメンバ関数をオーバーライドします。
このクラスのインスタンスを宣言し、そのインスタンスで URL を開きます。
ActiveX コントロールでの非同期的なダウンロードの詳細については、「インターネット上の ActiveX コントロール」を参照してください。