private static TraceSource GetTraceSourceWithListeners(string name, SourceLevels sourceLevels)
{
lock (cacheLock)
{
TraceSource traceSource = null;
string targetName;
if (!sourceToSourceWithListenersMap.TryGetValue(name, out targetName))
{
traceSource = GetTraceSourceWithListeners_Locked(name, sourceLevels);
targetName = traceSource == null ? null : traceSource.Name;
sourceToSourceWithListenersMap[name] = targetName;
}
else if (targetName != null)
{
traceSource = new TraceSource(targetName, sourceLevels);
}
return traceSource;
}
}