private IJobReporter CurrentReporter(ILogTarget target = null)
        {
            IJobReporter reporter;
            var          threadId  = Thread.CurrentThread.ManagedThreadId;
            bool         lockTaken = false;

            try
            {
                m_lock.Enter(ref lockTaken);
                if (!m_reporterMap.TryGetValue(threadId, out reporter))
                {
                    var threadIndex = m_threadCount++;
                    reporter = new JobReporter(threadIndex)
                    {
                        Indent = m_indent
                    };
                    m_reporterMap[threadId] = reporter;
                    if (target != null)
                    {
                        target.NewThreadIndex(threadIndex);
                    }
                }
            }
            finally
            {
                if (lockTaken)
                {
                    m_lock.Exit(true);
                }
            }
            return(reporter);
        }
예제 #2
0
 public void NewThreadIndex(int threadIndex)
 {
     m_target.NewThreadIndex(threadIndex);
 }