完成 LUA 同步和非同步動詞
邏輯單元應用程式 (LUA) 動詞命令可以同步或非同步完成執行。
同步動詞完成
當 LUA 能夠在發出動詞時立即完成動詞的所有處理,動詞命令就會同步完成。 發生這種情況時,主要傳回碼會設定為LUA_IN_PROGRESS以外的值,而 lua_flag2.async 位會設定為零。
應該測試 lua_flag2.async 位的值,而不是主要傳回碼不等於 LUA_IN_PROGRESS。 (如需這些傳回參數的相關資訊,請參閱個別動詞描述。)
非同步動詞完成
例如,某些 LUA 動詞 (,RUI_PURGE) 在本機處理之後快速完成。 不過,大部分動詞都需要一些時間才能完成,因為它們需要傳送訊息,並從本機節點或主應用程式接收訊息。
當 LUA 必須等候遠端 LU 或本機節點的資訊,才能完成動詞,動詞命令會以非同步方式完成。
發生這種情況時, lua_flag2.async 位會設定為 1。 主要傳回碼通常也會設定為 LUA_IN_PROGRESS,但無法依賴此值。 應該測試 lua_flag2.async 位的值。 應用程式現在可以執行其他處理,或等候來自 LUA 的通知,該動詞已完成。 LUA 會將主要傳回碼設定為其最終值,並將 lua_flag2.async 設為 1,以發出此通知。
當動詞完成時,LUA 會根據您的環境執行下列動作:
針對 Windows,可能會有兩種類型的通知。 LUA 應用程式:
發出 WaitForSingleObject 或 WaitForMultipleObject。
– 或 –
將 「WinRUI/WinSLI」 通知訊息張貼至WinRUI/WinSLI訊息的視窗控制碼。
使用 WaitForSingleObject 或 WaitForMultipleObject 的事件方法是在 Windows 上接收非同步通知的慣用方式。
在 Windows 環境中,它會將 「WinRUI/WinSLI」 通知訊息張貼到WinRUI/WinSLI訊息的視窗控制碼,以通知非同步要求完成。 視窗控制碼已新增為傳遞至 WinRUI 和 WinSLI 進入點的第一個參數。