Windows上的代码使用P / Invoke从kernel32.dll调用GetTickCount64()
这不能在Ubuntu Server 14上的Mono下工作 - 我得到EntryPointNotFoundException
。
this approach使用PerformanceCounter
。它适用于Windows,但当我在Linux上使用它,计数器名称/类别设置为System
/ System Up Time
时,它始终产生零时间。所以它也不起作用。
Environment.Tickount
与Windows上的工作方式相同,但它每47天就会溢出一次,这可能会让我的用例产生令人困惑的结果,所以我更喜欢64位计数器。
如何在Ubuntu Server上使用Mono运行的C#代码中获得系统正常运行时间?
答案 0 :(得分:0)
User Lex Li与closely related question的C代码相关联。
答案中有this one,其中包含来自/proc/uptime
的内容。这对C#代码非常有用 - 它可以使用File.ReadAllText()
然后解析生成的字符串。
var uptimeText = File.ReadAllText( "/proc/uptime" );
// Now split the string to extract the first component,
// parse it as double and use TimeSpan.FromSeconds()