public int AddThread(IGenThread genThread, String threadNameSuffix = null, IGenThread parentGenThread = null, bool autoRestart = false)
        {
            // add thread to thread list
            GenThreadInfo info = new GenThreadInfo();
            info.Name = threadNameSuffix == null ? genThread.ThreadName : (genThread.ThreadName + "_" + threadNameSuffix);
            info.GenThread = genThread;
            if (parentGenThread != null)
                info.ParentGenThreadInfo = FindThread(parentGenThread);
            info.Thread = new Thread(info.GenThread.RunThread);
            info.Thread.Name = info.Name;
            info.StartTime = null;
            info.AutoRestart = autoRestart;
            info.StartCount = 0;

            Threads.Add(info);

            return info.GenThread.ThreadNo;
        }
 private GenThreadInfo FindThread(IGenThread genThread)
 {
     foreach (GenThreadInfo info in Threads)
         if (info.GenThread == genThread)
             return info;
     return null;
 }