如何在Ubuntu Server上的Mono中获得系统正常运行时间?

时间:2017-02-07 14:49:30

标签: c# ubuntu mono portability uptime

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#代码中获得系统正常运行时间?

1 个答案:

答案 0 :(得分:0)

User Lex Liclosely 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()