示例#1
0
文件: Tracer.cs 项目: Den25570/Tracer
        public void StartTrace()
        {
            //get method info using reflection
            StackTrace stackTrace    = new StackTrace();
            MethodBase callingMethod = stackTrace.GetFrame(1).GetMethod();
            string     methodName    = callingMethod.Name;
            string     className     = callingMethod.ReflectedType.Name;

            MethodTrace currentMethodTrace = new MethodTrace(methodName, className);

            trace.StartMethodTrace(currentMethodTrace);
            currentMethodTrace.StartCount();
        }
示例#2
0
        public void StartMethodTrace(MethodTrace method)
        {
            if (currentStackTrace.IsEmpty)
            {
                Methods.Add(method);
            }
            else
            {
                MethodTrace currentMethod = currentStackTrace.First();
                currentMethod.Methods.Add(method);
            }

            currentStackTrace.Push(method);
        }
示例#3
0
文件: Trace.cs 项目: Den25570/Tracer
        public void StartMethodTrace(MethodTrace method)
        {
            int currentThreadID = Thread.CurrentThread.ManagedThreadId;

            ThreadTrace currentThreadTrace;

            if (threads.TryGetValue(currentThreadID, out currentThreadTrace))
            {
                currentThreadTrace.StartMethodTrace(method);
            }
            else
            {
                ThreadTrace newThreadTrace = new ThreadTrace(currentThreadID);
                if (threads.TryAdd(currentThreadID, newThreadTrace))
                {
                    newThreadTrace.StartMethodTrace(method);
                }
                else
                {
                    throw new Exception("Error occured while trying to add thread");
                }
            }
        }