C# 如何在Ubuntu服务器上获得Mono中的系统正常运行时间?

C# 如何在Ubuntu服务器上获得Mono中的系统正常运行时间?,c#,ubuntu,mono,portability,uptime,C#,Ubuntu,Mono,Portability,Uptime,我在Windows上的代码使用p/Invoke从kernel32.dll调用GetTickCount64这在Ubuntu服务器14上的Mono下不起作用-我得到EntryPointNotFoundException 使用PerformanceCounter时会出现问题。它在Windows上工作,但当我在Linux上使用它时,计数器名称/类别设置为System/System Up Time,它始终产生零时间跨度。所以它也不起作用 Tickount与Windows上的工作原理相同,但它每47天溢出一

我在Windows上的代码使用p/Invoke从kernel32.dll调用GetTickCount64这在Ubuntu服务器14上的Mono下不起作用-我得到EntryPointNotFoundException

使用PerformanceCounter时会出现问题。它在Windows上工作,但当我在Linux上使用它时,计数器名称/类别设置为System/System Up Time,它始终产生零时间跨度。所以它也不起作用

Tickount与Windows上的工作原理相同,但它每47天溢出一次,这可能会使我的用例产生混乱的结果,因此我更喜欢64位计数器

在Ubuntu服务器上使用Mono运行C代码时,如何获得系统正常运行时间?

链接到此C代码

其中一个答案是从/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()

使用本机Linux的方式,@LexLi我如何开始用C代码来做这件事?谷歌如何在Mono上做PInvoke。和你在Windows上做的相比没有太大区别。@LexLi这听起来太难了。我试着按照其中一个答案中所述的File.ReadAllText/proc/uptime,效果很好。谢谢。然后把它作为一个答案贴出来并接受它。