internal void DoFinalizeElements(CIElementFinalizationParameters aParams, Queue <CIElement> aCallBackLast, bool aForceFinalize, IEnumerable <CIElement> aElements) { foreach (CIElement element in aElements) { if (element.IsToBeFinalizedLast) { aCallBackLast.Enqueue(element); } // element.DoFinalize(aParams, aCallBackLast, aForceFinalize); } }
internal virtual void DoFinalize(CIElementFinalizationParameters aParams, Queue <CIElement> aCallBackLast, bool aForceFinalize) { lock ( iSyncLock ) { // Finalize children if (iChildren != null) { DoFinalizeElements(aParams, aCallBackLast, aForceFinalize, iChildren); } } // Finalize ourself if ((aForceFinalize || IsToBeFinalizedLast == false) && IsFinalized == false) { try { OnFinalize(aParams); } finally { IsFinalized = true; } } }
internal override void DoFinalize(CIElementFinalizationParameters aParams, Queue <CIElement> aCallBackLast, bool aForceFinalize) { DoFinalizeElements(aParams, aCallBackLast, aForceFinalize, this); base.DoFinalize(aParams, aCallBackLast, aForceFinalize); }
/// <summary> /// Called when the element is to finish its construction. At this point /// it is assumed that the crash container data structure is largely fully /// populated. This function call should typically perform any final /// post-processing, such as looking up symbols etc. /// </summary> /// <param name="aParams"></param> internal virtual void OnFinalize(CIElementFinalizationParameters aParams) { }