Exemple #1
0
        /// <summary>
        /// Add one to the counter for the type specified by object o.
        /// </summary>
        /// <param name="o"></param>
        public static void Add(object o)
        {
            if (Enabled == false)
            {
                return;
            }
            lock (instancetable)
            {
                System.Diagnostics.StackTrace ST = new System.Diagnostics.StackTrace();
                System.Diagnostics.StackFrame SF;
                int           IDX = 0;
                StringBuilder sb  = new StringBuilder();


                do
                {
                    SF = ST.GetFrame(IDX);
                    if (SF != null)
                    {
                        if (sb.Length == 0)
                        {
                            sb.Append(SF.GetMethod().DeclaringType.FullName + " : " + SF.GetMethod().Name);
                        }
                        else
                        {
                            sb.Append("\r\n");
                            sb.Append(SF.GetMethod().DeclaringType.FullName + " : " + SF.GetMethod().Name);
                        }
                    }
                    ++IDX;
                }while(SF != null && IDX != 7);


                string name = o.GetType().FullName;

                if (DataTable.ContainsKey(name) == false)
                {
                    DataTable[name] = new ArrayList();
                }
                InstanceStruct iss = new InstanceStruct();
                iss.WR        = new WeakReference(o);
                iss.StackList = sb.ToString();
                ((ArrayList)DataTable[name]).Add(iss);

                if (tracker != null)
                {
                    tracker.UpdateDisplayEntry(name);
                    tracker.statusBar.BeginInvoke(new TrackerHandler(HandleTracker), new object[1] {
                        o.GetType().FullName
                    });
                }
            }
        }
Exemple #2
0
            /// <summary>
            ///     Gets the stack stace to help find the error.
            /// </summary>
            private static void GetStackTrace()
            {
                var stackFrames = new StackTrace();

                if (stackFrames.FrameCount == 0)
                {
                    return;
                }


                var stackTrace = new XElement("StackTrace");


                foreach (var SF in stackFrames.GetFrames().Take(20))
                {
                    var msg = new XElement("Stack", SF.GetMethod().Name);
                    stackTrace.Add(msg);
                }
                XmlResult.Add(stackTrace);
            }