public void StartTrace() { MethodBase methodBase = new StackTrace().GetFrame(1).GetMethod(); MethodTracingResult methodResult = new MethodTracingResult { ClassName = methodBase.ReflectedType.Name, MethodName = methodBase.Name }; ThreadTracingResult curThreadResult = traceResult.AddThreadResult(Thread.CurrentThread.ManagedThreadId); curThreadResult.StartTracingMethod(methodResult); }
//Добавление измеряемого метода в список protected void AddMethod(MethodTracingResult methodResult) { //если стек методов не пустой if (threadMethods.Count > 0) { threadMethods.Peek().addInnerMethod(methodResult); } else { tracedMethods.Add(methodResult); } threadMethods.Push(methodResult); }
//Начало замера public void StartTracingMethod(MethodTracingResult methodResult) { AddMethod(methodResult); methodResult.startTracing(); }
public void addInnerMethod(MethodTracingResult method) { innerMethods.Add(method); }