Beispiel #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
                    });
                }
            }
        }
Beispiel #2
0
 public static void HandleTracker(string operation, string name)
 {
     tracker.UpdateDisplayEntry(name);
     tracker.statusBar.Text = operation + ": " + name;
 }
Beispiel #3
0
 public static void HandlerUpdate(object name)
 {
     tracker.UpdateDisplayEntry((string)name);
 }