Um aplicativo C # rastreia há quanto tempo está em execução?

102

Em caso afirmativo, existe uma maneira fácil de obter o tempo total desde o início?

quebrou
fonte
3
Seu aplicativo ou outro aplicativo? Acredito que o WMI pode rastrear algo assim, mas se for seu próprio aplicativo, é muito mais simples obter a data de inicialização.
Ry-

Respostas:

165

A System.Diagnostics.Processclasse tem uma propriedade que contém a hora de início que você pode usar para calcular por quanto tempo está em execução:

var current = System.Diagnostics.Process.GetCurrentProcess();
DateTime startedAt = current.StartTime
Lee
fonte
6
Impressionante! Gotta love .net
terminou em
1
Esteja ciente de que current.StartTimeé a hora local do servidor, não UTC.
George
33

Use StopWatchclasse para este recurso.

Mesmo que seja um exagero, sempre funcionará, mesmo se o usuário mudar o relógio ou mesmo se houver alguma mudança de horário de verão durante o processo. - Julien Lebosquain (Comentário à minha resposta.)

Nikhil Agrawal
fonte
9
Mesmo que seja um exagero, essa é a única resposta que sempre funcionará, mesmo que o usuário mude o relógio, mesmo que haja alguma mudança de horário de verão durante a execução do processo, então +1.
Julien Lebosquain
1
@JulienLebosquain: Obrigado. Acrescentarei esse ponto em minha resposta com os devidos créditos.
Nikhil Agrawal
6

Você pode ter um Static DateTime Variablepara seu projeto e armazenar a data e hora no construtor de sua classe principal. Referenciar esta variável estática e comparar com o tempo atual ajuda você a alcançar seu resultado

Akhil
fonte
4
;) sim, você também pode apenas ler a hora na variável existente;)
TomTom