2012-04-15 23 views
8

私はActionScript3.0(Flex)からC#(WPF)にアプリケーションを移植しています.AS3.0にはフラッシュ仮想マシンがミリ秒単位で開始してからgetTimer()という便利なユーティリティがあります。アプリケーション開始からの経過時間を取得する

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

としてクラスを介してC#で検索するが、this.Itのようなものを発見したことはモノラルで実行されますme.For例Unity3Dに非常に基本的な機能は、使い慣れた何かを持っているようです。私はここでいくつかのユーティリティが欠場しますか?

ありがとうございます。

答えて

26

Process.GetCurrentProcess().StartTimeはあなたの友人です。

..so

は開始からの経過時間を取得するには:

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

代わりに、あなたはより多くの定義が必要な場合は、System.Diagnostics.Stopwatchが望ましいかもしれません。もしそうなら、あなたのアプリの起動時に、ストップウォッチを開始します。

Stopwatch sw=Stopwatch.StartNew(); 

を、あなたの実行、実行中にsw.Elapsedプロパティを照会。

+0

いずれかを選択するかどうかは、精度の問題ではなく、代わりに必要なものです。 'Process.GetCurrentProcess()。StartTime'は' Stopwatch.StartNew() 'と同時に呼び出されることはありません!したがって、ユーザーがタイミングを開始するタイミングに依存します。 :) –

+0

Process.GetCurrentProcessはアプリケーションの起動後、時間を返しますか?私はちょうどチェックをしました:(DateTime.Now -Process.GetCurrentProcess()。StartTime).TotalSeconds。アプリケーションが起動している瞬間、Console.Itへの時刻は16-17秒で表示されます。これは明らかに大きすぎますアプリの起動には最大4秒かかりました。 –

+0

興味深い。ドキュメントは私に同意しているようです。これが事実であれば、私はそれが新しい質問に値すると言うでしょう。 – spender

関連する問題