异步接收数据

使用 Windows 时,TP 可以异步接收数据,而不考虑 TP 中发生的其他事件。 下表显示了 TP 异步接收数据的方法。 该表还指示如何将异步方法应用于接收数据以外的作。

操作系统 方法
Windows操作系统 通过 Windows 消息:应用程序通过WinAsyncAPPC来执行RECEIVE_AND_WAITMC_RECEIVE_AND_WAIT,然后通过PostMessage通知已定义的窗口句柄以确认完成。

此方法不限于 RECEIVE_AND_WAITMC_RECEIVE_AND_WAIT,但可以应用于任何 APPC 谓词。
Windows操作系统 通过 Win32® 事件:使用 WinAsyncAPPCEx 发出 RECEIVE_AND_WAITMC_RECEIVE_AND_WAIT,应用程序会通过 Win32 事件收到完成通知。

此方法不限于 RECEIVE_AND_WAITMC_RECEIVE_AND_WAIT,但可以应用于任何 APPC 谓词。
Windows操作系统 使用 RECEIVE_AND_POSTMC_RECEIVE_AND_POST:发出动词 RECEIVE_AND_POSTMC_RECEIVE_AND_POST

以下列表提供有关异步接收数据的这些方法的详细信息。 有关完整信息,请参阅谓词说明。

使用 WinAsyncAPPCRECEIVE_AND_WAITMC_RECEIVE_AND_WAIT
此方法使应用程序能够发出谓词,并在作完成后通过 PostMessage 发出通知。 若要检索要发布到窗口的消息编号,请使用“WinAsyncAPPC”作为输入字符串调用 RegisterWindowMessage 。 然后通过WinAsyncAPPC入口点,发出RECEIVE_AND_WAITMC_RECEIVE_AND_WAIT命令。

使用WinAsyncAPPCExRECEIVE_AND_WAITMC_RECEIVE_AND_WAIT
此方法使应用程序能够通过 Win32 事件获得通知。 编写需要同时服务多个对话的应用程序时,这特别有用。 传递给 APPC 时,该事件必须处于非信号状态,并且句柄必须具有更改事件状态(EVENT_MODIFY_STATE)的访问权限。

RECEIVE_AND_POSTMC_RECEIVE_AND_POST
使用 RECEIVE_AND_POSTMC_RECEIVE_AND_POST时,应用程序将通过 Win32 事件收到通知。 传递给 APPC 时,该事件必须处于未发送信号状态,并且句柄必须具有事件的 EVENT_MODIFY_STATE 访问权限。

异步接收数据时,TP 执行与此会话无关的任务;在收到通知之前,TP 无法发出大多数 APPC 谓词。 有关可发出动词的信息,请参阅 WinAsyncAPPCWinAsyncAPPCEx 的说明。

异步完成谓词后,请检查primary_rc,以确定是否已收到数据而不出错。

注释

如果发出动词的初始调用成功返回,则无论动词最终是否成功,都保证应用程序在动词完成时通过适当的方法得到通知。