Exemplo n.º 1
0
        public Tracer()
        {
            fTraceResult = new TraceResult();
            ThreadResult threadResult = new ThreadResult(System.Threading.Thread.CurrentThread.ManagedThreadId, 0);

            fTraceResult.Threads.Add(threadResult);
        }
Exemplo n.º 2
0
        private MethodResult CreateTraceResult(ThreadResult threadResult)
        {
            string        methodName   = GetMethodName();
            string        className    = GetClassName();
            MethodResult  methodResult = new MethodResult(className, methodName, GetUnixTimeInMilliseconds());
            List <string> stackMethods = GetStackTraceOfMethodNames(3);
            bool          isFirst      = true;
            MethodResult  traceIter    = methodResult;

            foreach (string methodNameTemp in stackMethods)
            {
                if (isFirst)
                {
                    isFirst = false;
                    bool isExist = false;
                    foreach (MethodResult traceTemp in threadResult.DependenceMethods)
                    {
                        if (traceTemp.MethodName == methodNameTemp)
                        {
                            traceIter = traceTemp;
                            isExist   = true;
                            break;
                        }
                    }
                    if (!isExist)
                    {
                        threadResult.DependenceMethods.Add(methodResult);
                        break;
                    }
                }
                else
                {
                    bool isExist = false;
                    foreach (MethodResult traceTemp in traceIter.DependenceMethods)
                    {
                        if (traceTemp.MethodName == methodNameTemp)
                        {
                            traceIter = traceTemp;
                            isExist   = true;
                            break;
                        }
                    }
                    if (!isExist)
                    {
                        traceIter.DependenceMethods.Add(methodResult);
                        break;
                    }
                }
            }
            return(methodResult);
        }
Exemplo n.º 3
0
        private ThreadResult GetOrCreateThreadResult()
        {
            int threadId = System.Threading.Thread.CurrentThread.ManagedThreadId;

            foreach (ThreadResult thResult in fTraceResult.Threads)
            {
                if (thResult.Id == threadId)
                {
                    return(thResult);
                }
            }
            ThreadResult threadResult = new ThreadResult(threadId, 0);

            fTraceResult.Threads.Add(threadResult);
            return(threadResult);
        }
Exemplo n.º 4
0
        public void StopTrace()
        {
            ThreadResult  threadResult = GetOrCreateThreadResult();
            string        methodName   = GetMethodName();
            List <string> stackMethods = GetStackTraceOfMethodNames(2);
            bool          isFirst      = true;
            MethodResult  traceIter    = new MethodResult("", "", 0);

            foreach (string methodNameTemp in stackMethods)
            {
                if (isFirst)
                {
                    isFirst = false;
                    foreach (MethodResult traceTemp in threadResult.DependenceMethods)
                    {
                        if (traceTemp.MethodName == methodNameTemp)
                        {
                            traceIter = traceTemp;
                            break;
                        }
                    }
                }
                else
                {
                    foreach (MethodResult traceTemp in traceIter.DependenceMethods)
                    {
                        if (traceTemp.MethodName == methodNameTemp)
                        {
                            traceIter = traceTemp;
                            break;
                        }
                    }
                }
            }
            traceIter.Time = GetUnixTimeInMilliseconds() - traceIter.Time;
        }