unschedTm 方法會取消逾時要求。
在下列情況下,會使用此方法:
- 結束狀態 - 逾時不再相關。
- 物件已毀損 - 在此情況下,與物件相關聯的所有計時器都會毀損。
unschedTm 方法的運作方式如下:
- 如果 OMReactive 實例不存在,則會傳回 unschedTm;否則它會呼叫互斥旗標,以保護下列作業:
- 如果 id
== 常數,則 unschedTm 會取消目的地為此 OMReactive 特定實例的所有事件。
- unschedTm 會呼叫 isCurrentEvent 方法,以判定現行事件是否委派給此 OMReactive。
如果是,則 unschedTm 會呼叫 findInList 方法(專用),以尋找到期清單中的逾時,然後將其從到期清單中移除。
- 接下來,unschedTm 會針對下列項目,建立三個副本:
- unschedTm 方法會反覆運算資料堆並呼叫 刪除 方法,以刪除目的地為特定 OMReactive 的那些逾時。
- 最後,該方法會鎖定,以符合到期清單中的逾時。
它會呼叫 findInList 方法,以反覆運算到期清單,來尋找相符的逾時。
當找到時,它會呼叫 setlId 方法,以將逾時 ID 設為 常數,然後將其從到期清單中移除。
- 如果 id == 常數,則 unschedTm 僅會取消該事件。
簽章RP_FRAMEWORK_DLL void unschedTm (short id,
OMReactive *c);
參數id
指定逾時要求的 ID 標籤。
如果指定 常數,則 unschedTm 會取消目的地為此 OMReactive 特定實例的所有事件。如果指定 Constants,則 unschedTm 僅會取消該逾時。
c
指定通往 OMReactive 實例要求者的指標。取消逾時之後,此參數會指向所通知的實例。
附註- 取消逾時需要以下兩個動作之一:
- 從資料堆刪除逾時。
- 取消事件佇列中的逾時(如果已分派逾時)。
藉由反覆運算事件佇列可完成此作業。
- 如果狀態圖實作已置換,則可使用 unschedTm。
- unschedTm 由 unschedTm(在 omthread.h 中定義)呼叫。