Пример #1
0
 public static void RefreshProcessCollection()
 {
     foreach (Process process in Process.GetProcesses())
     {
         if (!IsProcessIDInCollection(process.Id) && (process.MainWindowHandle != IntPtr.Zero))
         {
             ProcessItem item = new ProcessItem(process);
             _processList.Add(item);
             if (ProcessItemAdded != null)
             {
                 ProcessItemAdded(null, new ProcessManagerEventArgs(item));
             }
         }
     }
     for (int i = 0; i < _processList.Count; i++)
     {
         ProcessItem item = _processList[i];
         try
         {
             item.Process.Refresh();
             if (item.Process.HasExited)
             {
                 _processList.Remove(item);
                 if (ProcessItemRemoved != null)
                 {
                     ProcessItemRemoved(null, new ProcessManagerEventArgs(item));
                 }
                 item.Dispose();
             }
         }
         catch (Exception)
         {
         }
     }
 }