public static void Process() { DelayedObjectManager pDelayMan = DelayedObjectManager.PrivGetInstance(); CollObserver pNode = pDelayMan.head; while (pNode != null) { // Fire off listener pNode.Execute(); pNode = (CollObserver)pNode.pNext; } // remove pNode = pDelayMan.head; CollObserver pTmp = null; while (pNode != null) { pTmp = pNode; pNode = (CollObserver)pNode.pNext; // remove pDelayMan.PrivDetach(pTmp, ref pDelayMan.head); } }
//---------------------------------------------------------------------------------- // Static Methods //---------------------------------------------------------------------------------- public static void Attach(CollObserver observer) { // protection Debug.Assert(observer != null); DelayedObjectManager pDelayMan = DelayedObjectManager.PrivGetInstance(); // add to front if (pDelayMan.head == null) { pDelayMan.head = observer; observer.pNext = null; observer.pPrev = null; } else { observer.pNext = pDelayMan.head; observer.pPrev = null; pDelayMan.head.pPrev = observer; pDelayMan.head = observer; } }