ApprovalTests.Utilities.ParentProcessUtils.GetSelfAndAncestors C# (CSharp) Method

GetSelfAndAncestors() public static method

public static GetSelfAndAncestors ( Process self ) : IEnumerable
self System.Diagnostics.Process
return IEnumerable
        public static IEnumerable<Process> GetSelfAndAncestors(Process self)
        {
            var processIds = new HashSet<int>();

            var process = self;
            while (process != null)
            {
                yield return process;

                if (processIds.Contains(process.Id))
                {
                    // loop detected (parent id have been re-allocated to a child process!)
                    yield break;
                }
                processIds.Add(process.Id);

                process = process.ParentProcess();
            }
        }