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); }
public void NewThreadIndex(int threadIndex) { m_target.NewThreadIndex(threadIndex); }