2013-08-04 12 views
9

È possibile, in C#, ottenere un elenco di processi in esecuzione (non processi di servizio, ma applicazioni effettive) e ottenere un DateTime di quando l'applicazione è stata avviata? O un TimeSpan o anche un numero intero di quanto tempo è stato in esecuzione un processo?È possibile determinare per quanto tempo è in esecuzione un processo

+0

["C# ottieni l'elenco dei processi in esecuzione"] (http://www.google.com/search?q=c%23+++++++++++++++++++++++++), ["C# ottiene l'ora di inizio del processo "] (http://www.google.com/search?q=c%23+get+process+start+time) –

risposta

12

Process.GetProcesses recupererà un elenco di processi in esecuzione.

Ogni Process ha una proprietà che StartTime

ottiene il tempo in cui è stato avviato il processo associato.

Basta sottrarre quello da DateTime.Now per ottenere quanto tempo è stato in esecuzione il processo.

static void Main(string[] args) 
{ 
    var procs = Process.GetProcesses(); 
    foreach (var proc in procs) { 
     TimeSpan runtime; 
     try { 
      runtime = DateTime.Now - proc.StartTime; 
     } 
     catch (Win32Exception ex) { 
      // Ignore processes that give "access denied" error. 
      if (ex.NativeErrorCode == 5) 
       continue; 
      throw; 
     } 

     Console.WriteLine("{0} {1}", proc, runtime); 
    } 

    Console.ReadLine(); 
} 
+0

Non sapeva che il processo ha una proprietà di ora di inizio :) – Kurubaran

Problemi correlati