private void FindMethod() { currentElement = FindStartedMethod(Thread.CurrentThread.ManagedThreadId); try { StackTrace stackTrace = new StackTrace(); StackFrame frame; for (int i = 0; i < stackTrace.FrameCount; i++) { frame = stackTrace.GetFrame(i); Type declaringType = frame.GetMethod().DeclaringType; if (declaringType != null) { string name = declaringType.Name; if (name != typeof(Tracer).Name) { TraceResultElement tmpElement = new TraceResultElement("method", -1, frame.GetMethod().GetParameters().Count(), frame.GetMethod().Name, frame.GetMethod().Module.Name); currentElement.AddElement(tmpElement); currentElement = tmpElement; currentElement.StartTimer(); break; } } } } catch { Console.WriteLine("Ошибка"); } }
private TraceResultElement GetPointer(int id) { if (CheckForThreads(id) == true) { LinkedListNode <TraceResultElement> tmpNode; for (tmpNode = root.childs.First; tmpNode != null; tmpNode = tmpNode.Next) { if (tmpNode.Value.id == id) { return(tmpNode.Value); } } } currentElement = new TraceResultElement("thread", id); root.AddElement(currentElement); return(currentElement); }