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(); }
public void StartMethodTrace(MethodTrace method) { if (currentStackTrace.IsEmpty) { Methods.Add(method); } else { MethodTrace currentMethod = currentStackTrace.First(); currentMethod.Methods.Add(method); } currentStackTrace.Push(method); }
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"); } } }