62 votes

Récupérer la disponibilité du système à l'aide de C #

Existe-t-il un moyen simple d'obtenir la disponibilité d'un système en utilisant C #?

61voto

SLaks Points 391154
public TimeSpan UpTime {
    get {
        using (var uptime = new PerformanceCounter("System", "System Up Time")) {
            uptime.NextValue();       //Call this an extra time before reading its value
            return TimeSpan.FromSeconds(uptime.NextValue());
        }
    }
}

51voto

Martin Points 442

Je suis un peu en retard, mais un autre moyen simple consiste à utiliser la fonction GetTickCount64 , qui est disponible à partir de Windows Vista et ne déborde pas comme le fait GetTickCount:

 public static TimeSpan GetUpTime()
{
    return TimeSpan.FromMilliseconds(GetTickCount64());
}

[DllImport("kernel32")]
extern static UInt64 GetTickCount64();
 

30voto

adrianbanks Points 36858

System.Environment.TickCount obtient le nombre de millisecondes depuis le redémarrage du système.

Attention cependant, il s'agit d'un Int32 qui débordera après 24,9 jours et deviendra négatif. Voir les remarques sur les documents MDSN.

14voto

Précis et supérieur à System.Environment.TickCount , n'impliquant pas d'horribles compteurs de performances OS, WMI ou appels natifs:

 var ticks = Stopwatch.GetTimestamp();
var uptime = ((double)ticks) / Stopwatch.Frequency;
var uptimeSpan = TimeSpan.FromSeconds(uptime);
 

7voto

La façon la plus simple et appropriée de le faire est

 public static TimeSpan GetUptime()
{
    ManagementObject mo = new ManagementObject(@"\\.\root\cimv2:Win32_OperatingSystem=@");
    DateTime lastBootUp = ManagementDateTimeConverter.ToDateTime(mo["LastBootUpTime"].ToString());
    return DateTime.Now.ToUniversalTime() - lastBootUp.ToUniversalTime();
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X