示例#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
                    });
                }
            }
        }
示例#2
0
 public static void Add(object o)
 {
     if (Enabled)
     {
         lock (instancetable)
         {
             StackFrame    frame;
             StackTrace    trace   = new StackTrace();
             int           index   = 0;
             StringBuilder builder = new StringBuilder();
             do
             {
                 frame = trace.GetFrame(index);
                 if (frame != null)
                 {
                     if (builder.Length == 0)
                     {
                         builder.Append(frame.GetMethod().DeclaringType.FullName + " : " + frame.GetMethod().Name);
                     }
                     else
                     {
                         builder.Append("\r\n");
                         builder.Append(frame.GetMethod().DeclaringType.FullName + " : " + frame.GetMethod().Name);
                     }
                 }
                 index++;
             }while ((frame != null) && (index != 7));
             string fullName = o.GetType().FullName;
             if (!DataTable.ContainsKey(fullName))
             {
                 DataTable[fullName] = new ArrayList();
             }
             InstanceStruct struct2 = new InstanceStruct();
             struct2.WR        = new WeakReference(o);
             struct2.StackList = builder.ToString();
             ((ArrayList)DataTable[fullName]).Add(struct2);
             if (tracker != null)
             {
                 tracker.UpdateDisplayEntry(fullName);
                 tracker.statusBar.BeginInvoke(new TrackerHandler(InstanceTracker.HandleTracker), new object[] { o.GetType().FullName });
             }
         }
     }
 }
        /// <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});
                }
            }
        }
示例#4
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) {
        var st = new StackTrace();
        StackFrame sf;
        var idx = 0;
        var sb = new StringBuilder();


        do {
          sf = st.GetFrame(idx);
          if (sf != null) {
            if (sb.Length == 0) {
              var declaringType = sf.GetMethod().DeclaringType;
              if (declaringType != null)
                sb.Append(declaringType.FullName + " : " + sf.GetMethod().Name);
            } else {
              sb.Append("\r\n");
              var declaringType = sf.GetMethod().DeclaringType;
              if (declaringType != null)
                sb.Append(declaringType.FullName + " : " + sf.GetMethod().Name);
            }
          }
          ++idx;
        } while (sf != null && idx != 7);


        var name = o.GetType().FullName;

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

        if (_tracker == null)
          return;
        _tracker.UpdateDisplayEntry(name);
        _tracker.statusBar.BeginInvoke(new TrackerHandler(HandleTracker), o.GetType().FullName);
      }
    }