WinAsyncAPPCEx 函式為所有 APPC 動詞提供非同步的入口點。 使用此函式取代阻擋版本的動詞,允許在同一執行緒中透過事件處理多個會話。 此動詞僅支援 Microsoft Windows,並使用 Win32® 事件。
語法
HANDLE WINAPI WinAsyncAPPCEx(
HANDLEevent_handle,
longlpVcb);
參數
event_handle
用來通知事件的 Win32 事件。
lpVcb
指向動詞控制區塊。
傳回值
回傳值則指定非同步解析請求是否成功。 若函式成功,回傳值為非同步任務句柄。 若函數未成功,則回傳為零。
當此函式回傳成功值時,並不代表 APPC 呼叫最終會成功返回。 它只表示 APPC 函式庫可以利用事件作為通知,非同步嘗試呼叫。
備註
此函式設計用於 Win32 API 中的 WaitForSingleObject 或 WaitForMultipleObjects 。 這些功能在 Microsoft Platform SDK 文件的「參考」部分有描述。
關於如何在多執行緒 TP 中使用此動詞的範例,請參見多執行緒發送與接收範例 TP(MRCV.C,MSEND。C,以及MSENDRCV。C 語言位於 MSENDRCV 資料夾中),包含在 SDK 中。
在基本對話中能阻擋的 APPC 動詞如下:
-
用於映射對話且能阻擋的 APPC 動詞如下:
-
使用動詞的同步或非同步版本時,應用程式一次只能在對話中處理一個未完成的功能。 嘗試啟動第二個功能時會出現錯誤代碼AP_CONV_BUSY。
備註
前段的例外包括 RECEIVE_AND_POST、 MC_RECEIVE_AND_POST、 RECEIVE_AND_WAIT和 MC_RECEIVE_AND_WAIT。
備註
為了充分利用非同步支援,非同步發出的 RECEIVE_AND_WAIT 與 MC_RECEIVE_AND_WAIT 動詞被修改為與 RECEIVE_AND_POST 及 MC_RECEIVE_AND_POST 動詞相似。 具體來說,雖然其中一個動詞的非同步版本是優異的,但以下動詞可在同一對話中出現:
DEALLOCATE (AP_ABEND_PROG、AP_ABEND_SVC或AP_ABEND_TIMER)
備註
這使得應用程式,特別是伺服器應用程式,能夠使用非同步 RECEIVE_AND_WAIT 或 MC_RECEIVE_AND_WAIT 來接收資料。 雖然 RECEIVE_AND_POST、 MC_RECEIVE_AND_POST、 RECEIVE_AND_WAIT或 MC_RECEIVE_AND_WAIT 都很優秀,但它仍然可以使用 SEND_ERROR 或 MC_SEND_ERROR ,以及 REQUEST_TO_SEND 或 MC_REQUEST_TO_SEND。 建議您使用此功能以提供完整的非同步支援,特別是同一執行緒中多次對話的支援。
非同步操作完成後,應用程式會透過事件的訊號收到通知。 事件發出訊號後,檢查動詞控制區塊中 APPC 的主要回傳碼與次要回傳碼是否有錯誤狀況。