Internet 上的异步名字对象

由于应用程序访问网络的速度较慢,因此 Internet 要求采用新方法来设计应用程序。 应用程序应该异步执行网络访问,以避免用户界面出现停滞。 MFC 类 CAsyncMonikerFile 提供了用于下载文件的异步支持。

您可以使用异步名字对象扩展 COM 应用程序,以在 Internet 上异步下载和提供大型对象(例如位图和 VRML 对象)的渐进式呈现。 利用异步名字对象,您可以在 Internet 上下载 ActiveX 控件属性或文件,而无不会阻塞用户界面的响应。

异步名字对象的优点

可使用异步名字对象执行以下操作:

  • 下载代码和文件,而不会发生阻塞。

  • 下载 ActiveX 控件中的属性,而不会发生阻塞。

  • 接收下载进度的通知。

  • 跟踪进度和就绪状态信息。

  • 向用户提供有关进度的状态信息。

  • 允许用户可以随时取消下载。

异步名字对象的 MFC 类

CAsyncMonikerFile 派生自 CMonikerFile,而后者派生自 COleStreamFileCOleStreamFile 对象表示数据流;CMonikerFile 对象使用 IMoniker 获取数据,而 CAsyncMonikerFile 对象异步获取数据。

异步名字对象主要用在启用 Internet 的应用程序和 ActiveX 控件中,以在文件传输过程中提供具有响应能力的用户界面。 一个典型例子是使用 CDataPathProperty 为 ActiveX 控件提供异步属性。

ActiveX 控件中的数据路径的 MFC 类

MFC 类 CDataPathPropertyCCachedDataPathProperty 实现可异步加载的 ActiveX 控件属性。 可以在同步启动之后加载异步属性。 异步的 ActiveX 控件重复调用一个回调,以在长时间的属性交换过程中指示新数据的可用性。

CDataPathProperty 派生自 CAsyncMonikerFileCCachedDataPathProperty 派生自 CDataPathProperty。 要在 ActiveX 控件中实现异步属性,请从 CDataPathPropertyCCachedDataPathProperty 派生类,然后替代 OnDataAvailable 和希望接收的其他通知。

使用异步名字对象下载文件

  1. 声明派生自 CAsyncMonikerFile 的类。

  2. 替代 OnDataAvailable 来显示数据。

  3. 替代其他成员函数,包括 OnProgressOnStartBindingOnStopBinding

  4. 声明此类的实例并使用它来打开 URL。

有关在 ActiveX 控件中异步下载的详细信息,请参阅 Internet 上的 ActiveX 控件

另请参阅

MFC Internet 编程任务
MFC Internet 编程基础知识