Exemple #1
0
 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);
     }
 }
Exemple #2
0
        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;
                }
            }
        }
Exemple #3
0
 internal override void DoFinalize(CIElementFinalizationParameters aParams, Queue <CIElement> aCallBackLast, bool aForceFinalize)
 {
     DoFinalizeElements(aParams, aCallBackLast, aForceFinalize, this);
     base.DoFinalize(aParams, aCallBackLast, aForceFinalize);
 }
Exemple #4
0
 /// <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)
 {
 }