如何获得机器的正常运行时间?

时间:2008-11-05 13:09:52

标签: .net

我想显示我的代码运行的机器的运行时间,我该怎么做?

9 个答案:

答案 0 :(得分:10)

试试此链接。它使用 System.Environment.TickCount 属性

  

获取自系统启动以来经过的毫秒数。 - MSDN

http://msdn.microsoft.com/en-us/library/system.environment.tickcount(VS.80).aspx

注意:此方法将工作25天,因为TickCount是Int32。

答案 1 :(得分:5)

using System.Management;
using System.Linq;

TimeSpan GetUptime()
 { var query = new SelectQuery("SELECT LastBootUpTime 
                                 FROM Win32_OperatingSystem 
                                 WHERE Primary='true'");
   var mos = new ManagementObjectSearcher(query);
   var str = mos.Get().First().Properties["LastBootUpTime"].Value.ToString();

   return DateTime.Now - ManagementDateTimeConverter.ToDateTime(str);
 }

(基于http://bytes.com/forum/thread502885.html的代码)

答案 2 :(得分:2)

您也可以使用诊断

using System.Diagnostics;
..........
PerformanceCounter perfc = new PerformanceCounter("System","System Up Time");
perfc.NextValue();
TimeSpan t = TimeSpan.FromSeconds(perfc.NextValue());
..........

答案 3 :(得分:1)

最简单和正确的方法是

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();
}

答案 4 :(得分:1)

很奇怪他们还没有考虑过秒表吗?

精确且大于System.Environment.TickCount,不涉及操作系统可怕的性能计数器,WMI或本机调用,并且非常简单:

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

答案 5 :(得分:0)

有很多可能意味着什么的定义。假设我们正在谈论一个应用程序,那么对一个简单服务的远程ping可能就足够了。 Keynote为网络提供企业级解决方案,必须有许多其他解决方案,我想象的很多免费。

更新:鉴于此标记为.net,我认为我们对应用程序的正常运行时间感兴趣。它是一个应用程序,您希望在其中显示机器的正常运行时间。

答案 6 :(得分:0)

供将来参考,在* nix上,使用正常运行时间(1)

答案 7 :(得分:0)

仅供参考;在Win32世界中,您可以使用:

GetTickCountGetTickCount64Performance Counters

答案 8 :(得分:-1)

我建议您使用命令行: net statistics workstation 并解析输出。机器运行的时间是在“Statistics since”之后。