public static List <ProcessInfo> GetProcessInfos()
        {
            var processes     = Process.GetProcesses();
            var InstanceNames = ProcessMonitor.GetProcessInstanceNameList();

            List <ProcessMonitor> items = new List <ProcessMonitor>();

            foreach (var process in processes)
            {
                if (process.Id == 0)
                {
                    continue;
                }
                if (InstanceNames.Contains(process.ProcessName, StringComparer.OrdinalIgnoreCase))
                {
                    try
                    {
                        ProcessMonitor ProcessMonitor = new ProcessMonitor(process, InstanceNames);
                        ProcessMonitor.Init();
                        items.Add(ProcessMonitor);
                    }
                    catch (System.Exception) { }
                }
            }
            Thread.Sleep(10);
            List <ProcessInfo> processInfos = new List <ProcessInfo>();

            foreach (var item in items)
            {
                try
                {
                    item.UpdateInfo();
                    ProcessInfo info = new ProcessInfo()
                    {
                        Id           = item.Id,
                        FileName     = item.FileName,
                        ProcessName  = item.ProcessName,
                        InstanceName = item.InstanceName,
                        CpuUsage     = item.CpuUsage,
                        MemoryUsage  = item.MemoryUsage
                    };
                    processInfos.Add(info);
                }
                catch (System.Exception) { }
            }
            processInfos = processInfos.OrderByDescending(q => q.CpuUsage).ToList();
            return(processInfos);
        }