Windows CPI-C 异步支持
发出调用且在调用完成前不重新获得控制权的程序无法执行任何其他操作。 这种类型的操作(称为阻止)不适合用于处理来自许多客户端的多个请求的服务器应用程序。 异步调用完成会立即返回初始调用,因此应用程序可以继续执行其他进程。
适用于通信的 Windows 通用编程接口 (CPI-C) 支持与异步通信相关,包括以下调用和扩展:
Specify_Windows_Handle (CPI-C)
Microsoft Windows 下的两种方法可用于异步谓词完成:
使用窗口句柄发布消息。
正在等待 Win32 事件。
传统方法使用发布到窗口句柄的消息来通知应用程序谓词完成。 此方法在产品的早期版本中用于支持 Windows 3。x.
使用消息发布的异步支持追加到 Set_Processing_Mode (CPI-C) 调用,并使应用程序能够在窗口句柄上收到调用完成的通知。 使用“WinAsyncCPIC”作为字符串调用 RegisterWindowsMessage 时,应用程序会传递一个窗口句柄,通过该句柄通知应用程序调用完成。 然后,应用程序发出 CPI-C 调用,完成后,会将一条消息发布到传递的窗口句柄,通知应用程序调用已完成。
除了异步 接收 调用可以在挂起时发出某些其他调用外,会话在任何时候只能有一个未完成的操作。 有关使用异步 接收 调用的详细信息,请参阅 使用异步调用完成。 如果操作不完整,程序可以发出 Wait_For_Conversation 来测试其完成情况,或者 发出Cancel_Conversation 以结束会话和未完成的操作。
主机集成服务器支持使用 Win32 事件作为通知的第二种方法。
如果事件已使用 WinCPICSetEvent 向会话注册,应用程序可以调用 Win32 WaitForSingleObject 或 WaitForMultipleObjects 函数,等待收到谓词完成通知。
Windows CPI-C 所需的唯一 Windows 扩展函数是初始化 (WinCPICStartup) 和终止 (WinCPICCleanup) 目的。 根据你的应用程序,其他用于处理异步谓词完成的 Windows 扩展可能很有用,但它们不是必需的。 有关如何使用 Windows CPI-C 异步调用和 Windows 扩展的示例,请参阅 异步调用完成。 有关所有 Windows CPI-C 调用和扩展的完整说明,请参阅适用于 Windows 环境的CPI-C 调用和扩展。