2012-04-15 192 views
8

我正在從ActionScript3.0(Flex)向C#(WPF)移植應用程序.AS3.0有一個方便的實用程序getTimer(),它以毫秒爲單位返回自Flash虛擬機啓動以來的時間。通過類在C#中搜索作爲獲取自應用程序啓動以來的運行時間

DateTime 
DispatcherTimer 
System.Diagnostics.Process 
System.Diagnostics.Stopwatch 

,但發現沒有像this.It似乎me.For例如Unity3D一個非常基本的功能,它可以運行在Mono提供了一些熟悉的東西。我在這裏錯過一些實用工具嗎?

在此先感謝。

回答

26

Process.GetCurrentProcess().StartTime是你的朋友。

..所以獲得經過的時間開始:

DateTime.UtcNow - Process.GetCurrentProcess().StartTime.ToUniversalTime() 

另外,如果你需要更高的清晰度,System.Diagnostics.Stopwatch可能是可取的。如果是這樣,你的應用程序啓動時啓動秒錶:

Stopwatch sw=Stopwatch.StartNew(); 

那麼你的執行運行期間查詢sw.Elapsed財產。

+0

是否選擇其中一個不是精確度問題,而是需求問題。 'Process.GetCurrentProcess()。StartTime'永遠不會在'Stopwatch.StartNew()'同時被調用!所以這取決於用戶何時開始計時。 :) – 2012-04-15 10:34:38

+0

您確定Process.GetCurrentProcess返回自應用程序啓動以來的時間?我剛剛做了一個檢查:(DateTime.Now -Process.GetCurrentProcess()。StartTime).TotalSeconds。在應用程序啓動的那一刻,我打印出控制檯的時間。它從16-17秒開始。顯然太多了,因爲該應用程序最多需要4秒才能啓動。 – 2012-04-15 10:44:37

+0

有趣。該文件似乎與我同意。如果真的如此,我會說這是值得的一個新問題。 – spender 2012-04-16 08:22:04