Ejemplo n.º 1
0
        internal static FauxProcess GetProcess(int pid, DateTime msgTime)
        {
            lock (ProcessCache) {
                FauxProcess result;

                if (ProcessCache.ContainsKey(pid))
                {
                    result = ProcessCache[pid];
                    if (result.FirstMessageTime == DateTime.MinValue)
                    {
                        result.FirstMessageTime = msgTime;
                    }
                    try {
                        var checkProc = Process.GetProcessById(pid);
                        if (checkProc.StartTime != result.StartTime)
                        {
                            // new proc with same id.
                            result = new FauxProcess {
                                ProcessName      = checkProc.ProcessName,
                                StartTime        = checkProc.StartTime,
                                FirstMessageTime = msgTime,
                                Id = pid
                            };
                            ProcessCache[pid] = result;
                        }
                    } catch {
                    }
                    return(result);
                }
                try {
                    var proc = Process.GetProcessById(pid);
                    result = new FauxProcess {
                        ProcessName      = proc.ProcessName,
                        StartTime        = proc.StartTime,
                        FirstMessageTime = msgTime,
                        Id = pid
                    };
                } catch {
                    result = new FauxProcess {
                        ProcessName      = "<exited>",
                        StartTime        = msgTime,
                        FirstMessageTime = msgTime,
                        Id = pid
                    };
                }
                ProcessCache.Add(pid, result);
                return(result);
            }
        }
Ejemplo n.º 2
0
        internal static FauxProcess GetProcess(int pid, DateTime msgTime) {
            lock (ProcessCache) {
                FauxProcess result;

                if (ProcessCache.ContainsKey(pid)) {
                    result = ProcessCache[pid];
                    if (result.FirstMessageTime == DateTime.MinValue) {
                        result.FirstMessageTime = msgTime;
                    }
                    try {
                        var checkProc = Process.GetProcessById(pid);
                        if (checkProc.StartTime != result.StartTime) {
                            // new proc with same id.
                            result = new FauxProcess {
                                ProcessName = checkProc.ProcessName,
                                StartTime = checkProc.StartTime,
                                FirstMessageTime = msgTime,
                                Id = pid
                            };
                            ProcessCache[pid] = result;
                        }
                    } catch {
                    }
                    return result;
                }
                try {
                    var proc = Process.GetProcessById(pid);
                    result = new FauxProcess {
                        ProcessName = proc.ProcessName,
                        StartTime = proc.StartTime,
                        FirstMessageTime = msgTime,
                        Id = pid
                    };
                } catch {
                    result = new FauxProcess {
                        ProcessName = "<exited>",
                        StartTime = msgTime,
                        FirstMessageTime = msgTime,
                        Id = pid
                    };
                }
                ProcessCache.Add(pid, result);
                return result;
            }
        }