Czy aplikacja C # śledzi, jak długo jest uruchomiona?


102

A jeśli tak, to czy istnieje łatwy sposób na uzyskanie całkowitego czasu od jego rozpoczęcia?


3
Twoja aplikacja czy inna aplikacja? Uważam, że WMI może śledzić coś takiego, ale jeśli jest to Twoja własna aplikacja, znacznie łatwiej jest po prostu uzyskać datę uruchomienia.
— Ry-

Odpowiedzi:


165

System.Diagnostics.ProcessKlasa ma właściwość zawierającą czas rozpoczęcia za pomocą którego można obliczyć, jak długo to został uruchomiony:

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

6
Niesamowite! Muszę kochać .net
— zepsuł się

1
Należy pamiętać, że current.StartTimejest to czas lokalny serwera, a nie UTC.
— George

33

Użyj StopWatchklasy dla tej funkcji.

Nawet jeśli jest to dość przesada, zawsze będzie działać, nawet jeśli użytkownik zmieni zegar lub nawet jeśli podczas procesu nastąpi zmiana czasu letniego. - Julien Lebosquain (komentarz do mojej odpowiedzi.)


9
Nawet jeśli jest to dość przesada, to jedyna odpowiedź, która zawsze będzie działać, nawet jeśli użytkownik zmieni zegar, nawet jeśli wystąpią pewne zmiany czasu letniego podczas wykonywania procesu, więc +1.
— Julien Lebosquain

1
@JulienLebosquain: Dzięki. Dodam ten punkt w mojej odpowiedzi wraz z należnymi kredytami.
— Nikhil Agrawal

6

Możesz mieć Static DateTime Variabledla swojego projektu i przechowywać datę i godzinę w konstruktorze swojej klasy głównej. Odwołanie się do tej zmiennej statycznej i porównanie z bieżącym czasem pomaga osiągnąć wynik


4
;) tak, możesz też tylko odczytać czas z istniejącej zmiennej;)
— TomTom
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.