private static void AddToActiveListInSortedOrder(TimerManager pInstance, TimeEvent pNewNode) { TimeEvent pListPointer = (TimeEvent)pInstance.BaseGetActive(); if ((pListPointer == null) || (pNewNode.GetTriggerTime() <= pListPointer.GetTriggerTime())) { // If list is empty, or if pNode.triggerTime <= head.triggerTime // make the node as head pInstance.BaseSetActiveHead(pNewNode); } else { while (pListPointer != null) { // If next TimeEvent has a greater triggerTime than new node, insert into list if (pListPointer.GetTriggerTime() >= pNewNode.GetTriggerTime()) { AddToListBeforeNode(pNewNode, pListPointer); // Break loop break; } else if (pListPointer.GetNext() == null) { AddToListAfterNode(pNewNode, pListPointer); break; } pListPointer = (TimeEvent)pListPointer.GetNext(); } } }