ISHELL_SendEvent() 和 ISHELL_PostEvent() 有什麼區別?

ISHELL_SendEvent() 和 ISHELL_PostEvent() 有什麼區別?
ISHELL_SendEvent() 和 ISHELL_PostEvent() 函數都用來向指定類發送事件。 兩者的區別在於發送事件的方式。

對於 ISHELL_SendEvent(),事件會立即發送到指定類 ID 的應用程序。如果當前沒有該類的實例,AEE 外殼創建一個實例,然後用指定的事件代碼和數據參數調用 IAPPLET_HandleEvent() 函數。 除非應用程序願意自動啓動,否則事件處理完後它即會終止。

除了不會立即調用目標類的 IAPPLET_HandleEvent() 函數外,ISHELL_PostEvent() 與之類似。 事件會進入隊列,稍後發送。這樣,調用應用程序可以不中斷地繼續進行處理。 重複的 ISHELL_PostEvent 消息將被丟棄。

ISHELL_SendEvent() 函數用於控制目標小程序, 此函數可直接向目標小程序發送事件。 對使用 ISHELL_PostEvent() 傳遞的事件的處理會延遲到下一個事件循環。 在處理其它事件的同時保持程序不間斷執行方面,此函數非常有用。

假設此刻接收事件 (PostEvent/SendEvent) 的小程序不是當前正在運行的小程序。 在這種情況下,事件被分發並傳送至接收小程序後,此小程序將被釋放並卸載,除非

a) 此小程序還有其它未完成事件
b) 此小程序曾嘗試自動啓動或嘗試轉至後臺運行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章