Un'app C # tiene traccia da quanto tempo è in esecuzione?


102

E se lo fa, c'è un modo semplice per ottenere il tempo totale da quando è iniziato?


3
La tua app o un'altra app? Credo che WMI possa tenere traccia di qualcosa di simile, ma se è la tua app, è molto più semplice ottenere la data all'avvio.
Ry-

Risposte:


165

La System.Diagnostics.Processclasse ha una proprietà contenente l'ora di inizio che puoi usare per calcolare da quanto tempo è stata eseguita:

var current = System.Diagnostics.Process.GetCurrentProcess();
DateTime startedAt = current.StartTime

6
Eccezionale! Devo amare .net
rotto il

1
Tieni presente che current.StartTimeè l'ora locale del server, non UTC.
George

33

Usa la StopWatchclasse per questa funzione.

Anche se abbastanza eccessivo, funzionerà sempre, anche se l'utente cambia l'orologio o anche se ci sono alcune modifiche all'ora legale durante il processo. - Julien Lebosquain (commento alla mia risposta.)


9
Anche se abbastanza eccessiva, questa è l'unica risposta che funzionerà sempre, anche se l'utente cambia l'orologio, anche se ci sono alcune modifiche all'ora legale durante l'esecuzione del processo, quindi +1.
Julien Lebosquain

1
@JulienLebosquain: Grazie. Aggiungerò questo punto nella mia risposta con i dovuti riconoscimenti.
Nikhil Agrawal

6

Puoi avere un Static DateTime Variableper il tuo progetto e memorizzare il datetime nel Costruttore della tua classe principale. Fare riferimento a questa variabile statica e confrontare con l'ora corrente aiuta a ottenere il risultato


4
;) sì, puoi anche leggere l'ora dalla variabile esistente;)
TomTom
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.