Beispiel #1
0
        public void StartTrace(MethodSubstructure method, int threadID)
        {
            //Добавление в список "струкр потоков" новой или возврат уже существующей.Ключ - Ид Потока.
            ThreadSubstructure threadSub = threadSubstructures.GetOrAdd(threadID, new ThreadSubstructure());

            threadSub.StartTrace(method);
        }
Beispiel #2
0
 public void StartTrace(MethodSubstructure method)
 {
     //Если на момент запуска трейсера стек пуст, то этот метод не является вложенным, добавление в список методов потока.
     if (stackOfMethodSubstructures.Count == 0)
     {
         listOfMethodSubstructures.Add(method);
     }
     stackOfMethodSubstructures.Push(method);
     method.StartTrace();
 }
Beispiel #3
0
        // *Если стек не пуст, то тот метод, который ниже по стеку является родителем(вложенным в) того, кто выше.
        public void StopTrace()
        {
            MethodSubstructure currentMethod = stackOfMethodSubstructures.Pop();
            MethodSubstructure parentMethod  = null;

            currentMethod.StopTrace();

            threadTime = GetThreadTime();

            // Добавление в список вложенных методов (кого?) метода "родителя" его вложенных методов.
            if (stackOfMethodSubstructures.Count != 0)
            {
                parentMethod = stackOfMethodSubstructures.Peek();
                parentMethod.listOfMethodSubstructures.Add(currentMethod);
            }
        }