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); }
//Добавляет или возвращает уже существующий поток public ThreadTracingResult AddThreadResult(int id) { ThreadTracingResult result; //если поток уже есть, он заносится в result if (!threadResults.TryGetValue(id, out result)) { result = new ThreadTracingResult(id); threadResults[id] = result; } return(result); }