共用方式為


完成 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 應用程式:

    發出 WaitForSingleObjectWaitForMultipleObject

    – 或 –

    將 「WinRUI/WinSLI」 通知訊息張貼至WinRUI/WinSLI訊息的視窗控制碼。

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

  • 在 Windows 環境中,它會將 「WinRUI/WinSLI」 通知訊息張貼到WinRUI/WinSLI訊息的視窗控制碼,以通知非同步要求完成。 視窗控制碼已新增為傳遞至 WinRUIWinSLI 進入點的第一個參數。