コード例 #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
ファイル: ThreadTrace.cs プロジェクト: Den25570/Tracer
        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");
                }
            }
        }