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?


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

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.)


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


4
;) sim, você também pode apenas ler a hora na variável existente;)
TomTom
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.