2017-02-07 19 views
0

Мой код в Windows используется P/Invoke для вызова GetTickCount64() из kernel32.dll Это не работает в Mono на сервере Ubuntu 14 - я получаю EntryPointNotFoundException.Как восстановить время работы системы в Mono на сервере Ubuntu?

this approach с использованием PerformanceCounter. Он работает на Windows, но когда я использую его в Linux с номером счетчика/категорией, установленным в System/System Up Time, он постоянно возвращает нулевые интервалы времени. Так что это тоже не работает.

Environment.Tickount работает так же, как и в Windows, но он переполняется каждые 47 дней, и это может привести к запутывающим результатам для моей утилиты, поэтому я бы предпочел 64-разрядный счетчик.

Как получить время работы системы в коде C#, работающем с Mono на сервере Ubuntu?

+0

Использование родной Linux путь тогда, http://stackoverflow.com/questions/1540627/what-api-do-i-call-to-get-the-system-uptime –

+0

@LexLi Как начать с выполнением этого в коде C#? – sharptooth

+0

Google, как сделать PInvoke на Mono. Нет большой разницы по сравнению с тем, что вы делаете в Windows. –

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^