public void StopTrace() { int threadId = Thread.CurrentThread.ManagedThreadId; MethodStatItem methodStat = _result.ThreadsStat[threadId].LastStackMethods.Pop(); methodStat.StopTrace(); }
public void StartTrace() { IsResultReady = false; int threadId = Thread.CurrentThread.ManagedThreadId; ThreadStatItem threadStat = _result.ThreadsStat.GetOrAdd(threadId, _ => new ThreadStatItem(threadId)); StackTrace stackTrace = new StackTrace(); MethodBase method = stackTrace.GetFrame(1).GetMethod(); MethodStatItem methodStatItem = new MethodStatItem(method.Name, method.ReflectedType?.Name); methodStatItem.StartTrace(); if (threadStat.LastStackMethods.Count != 0) { threadStat.LastStackMethods.Peek().AddChildMethod(methodStatItem); } else { threadStat.Methods.Add(methodStatItem); } threadStat.LastStackMethods.Push(methodStatItem); }