以非同步方式接收資料

使用 Windows 時,tp 能以非同步方式接收資料,而不考慮 tp 內發生的其他事件。 下表顯示 TP 可以用非同步方式接收資料的方法。 此表也會指出如何將非同步方法套用至接收資料以外的動作。

作業系統 方法
Windows 透過 Windows 訊息:使用WinAsyncAPPC發出RECEIVE_AND_WAITMC_RECEIVE_AND_WAIT問題; 應用程式會在已定義視窗控制碼的PostMessage完成時收到通知。

這個方法不限於 RECEIVE_AND_WAITMC_RECEIVE_AND_WAIT,但可以套用至任何 APPC 動詞。
Windows 透過 Win32® 事件:RECEIVE_AND_WAITMC_RECEIVE_AND_WAITWinAsyncAPPCEx問題;應用程式會透過 Win32 事件通知完成。

這個方法不限於 RECEIVE_AND_WAITMC_RECEIVE_AND_WAIT,但可以套用至任何 APPC 動詞。
Windows 使用 RECEIVE_AND_POSTMC_RECEIVE_AND_POST: 發出 RECEIVE_AND_POSTMC_RECEIVE_AND_POST 動詞。

下列清單提供有關這些以非同步方式接收資料之方法的詳細資料。 如需完整資訊,請參閱動詞描述。

RECEIVE_AND_WAITMC_RECEIVE_AND_WAITWinAsyncAPPC
此方法可讓應用程式發出動詞命令,並在動作完成時透過 PostMessage 通知。 若要抓取將張貼至視窗的訊息編號,請使用 "WinAsyncAPPC" 作為輸入字串來呼叫 RegisterWindowMessage 。 然後使用WinAsyncAPPC進入點發出RECEIVE_AND_WAITMC_RECEIVE_AND_WAIT

RECEIVE_AND_WAITMC_RECEIVE_AND_WAITWinAsyncAPPCEx
此方法可讓應用程式透過 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,以找出是否在沒有錯誤的情況下收到資料。

注意

如果發出動詞命令的初始呼叫成功傳回,當動詞完成時,應用程式就會收到適當的 (通知,) 當動詞完成時,不論動詞命令是否最終都成功。