获取自应用程序启动以来的运行时间
问题描述:
我正在从ActionScript3.0(Flex)向C#(WPF)移植应用程序.AS3.0有一个方便的实用程序getTimer(),它以毫秒为单位返回自Flash虚拟机启动以来的时间。通过类在C#中搜索作为获取自应用程序启动以来的运行时间
DateTime
DispatcherTimer
System.Diagnostics.Process
System.Diagnostics.Stopwatch
,但发现没有像this.It似乎me.For例如Unity3D一个非常基本的功能,它可以运行在Mono提供了一些熟悉的东西。我在这里错过一些实用工具吗?
在此先感谢。
答
Process.GetCurrentProcess().StartTime
是你的朋友。
..所以获得经过的时间开始:
DateTime.UtcNow - Process.GetCurrentProcess().StartTime.ToUniversalTime()
另外,如果你需要更高的清晰度,System.Diagnostics.Stopwatch
可能是可取的。如果是这样,你的应用程序启动时启动秒表:
Stopwatch sw=Stopwatch.StartNew();
那么你的执行运行期间查询sw.Elapsed
财产。
是否选择其中一个不是精确度问题,而是需求问题。 'Process.GetCurrentProcess()。StartTime'永远不会在'Stopwatch.StartNew()'同时被调用!所以这取决于用户何时开始计时。 :) – 2012-04-15 10:34:38
您确定Process.GetCurrentProcess返回自应用程序启动以来的时间?我刚刚做了一个检查:(DateTime.Now -Process.GetCurrentProcess()。StartTime).TotalSeconds。在应用程序启动的那一刻,我打印出控制台的时间。它从16-17秒开始。显然太多了,因为该应用程序最多需要4秒才能启动。 – 2012-04-15 10:44:37
有趣。该文件似乎与我同意。如果真的如此,我会说这是值得的一个新问题。 – spender 2012-04-16 08:22:04