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 訊息的視窗控制代碼。

    使用 WaitForSingleObjectWaitForMultipleObject 的事件方法,是 Windows 上接收非同步通知的首選方式。

  • 在 Windows 環境中,它會透過將「WinRUI/WinSLI」通知訊息貼入 WinRUI/WinSLI 訊息的視窗代號來通知非同步請求的完成。 新增了一個視窗句柄作為傳遞給 WinRUIWinSLI 入口點的第一個參數。