in Microsoft.Diagnostics.Tracing/TraceEvent/TraceEvent/22_ObserveEventSource.cs [84:105]
private static string GetProcessName(int processID)
{
// Only keep the cache for 10 seconds to avoid issues with process ID reuse.
var now = DateTime.UtcNow;
if ((now - s_processNameCacheLastUpdate).TotalSeconds > 10)
s_processNameCache.Clear();
s_processNameCacheLastUpdate = now;
string ret = null;
if (!s_processNameCache.TryGetValue(processID, out ret))
{
Process proc = null;
try { proc = Process.GetProcessById(processID); }
catch (Exception) { }
if (proc != null)
ret = proc.ProcessName;
if (string.IsNullOrWhiteSpace(ret))
ret = processID.ToString();
s_processNameCache.Add(processID, ret);
}
return ret;
}