示例#1
0
        public void CountThreads(iSCDThreadContainer container)
        {
            iSCDDebuggingThreadContainerInfo info = new iSCDDebuggingThreadContainerInfo(container);

            containerInfos.Add(info);

            totalThreadsStarted++;
        }
示例#2
0
        public double MillisecondsSinceThreadStarted(int threadID)
        {
            iSCDDebuggingThreadContainerInfo info = ContainerInfoForThreadID(threadID);

            if (info.container.IsRunning())
            {
                return((DateTime.UtcNow - info.initedTime).TotalMilliseconds);
            }
            else
            {
                return(info.lifeTime);
            }
        }
示例#3
0
        public void Log(object content, iSCDRDLogType type, bool verbose)
        {
            if (Thread.CurrentThread.Name == null)
            {
                throw new System.Exception("iSCentralDispatchRuntimeDebugger.Log cannot be called in main thread.");
            }

            iSCDThreadContainer container = GetCurrentSender();

            iSCDRDLogPackage package = new iSCDRDLogPackage(container, type, content, MillisecondsSinceThreadStarted(container.iSCD_RuntimeID) * 0.001f, verbose);

            iSCDDebuggingThreadContainerInfo info = ContainerInfoForThreadID(container.iSCD_RuntimeID);

            info.logs.Add(package);

            lock (logPackages) logPackages.Add(package);
        }
示例#4
0
        public List <iSCDRDLogPackage> LogsForThreadID(int threadID)
        {
            iSCDDebuggingThreadContainerInfo info = ContainerInfoForThreadID(threadID);

            return(info.logs);
        }
示例#5
0
        public void RegisterThreadAbort(int threadID)
        {
            iSCDDebuggingThreadContainerInfo info = ContainerInfoForThreadID(threadID);

            info.lifeTime = (DateTime.UtcNow - info.initedTime).TotalMilliseconds;
        }