2012-04-15 61 views
8

ja portowania aplikacji z ActionScript3.0 (Flex) do C# (WPF) .AS3.0 ma poręczne narzędzie o nazwie getTimer() która zwraca czas od początku Flash Wirtualna maszyna w milliseconds.I ukrywał szukając w C# poprzez klasachGet czas, który upłynął od rozpoczęcia aplikacji

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

ale nic nie znalazłem jak this.It wydaje się bardzo proste cechą me.For przykład Unity3D który działa na Mono ma coś znajomego. Czy brakuje mi tu jakiegoś narzędzia?

Z góry dziękuję.

Odpowiedz

26

Process.GetCurrentProcess().StartTime jest twoim przyjacielem.

..so aby czas, który upłynął od początku:

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

alternatywnie, jeśli potrzebujesz więcej definicji, System.Diagnostics.Stopwatch może być korzystne. Jeśli tak, należy uruchomić stoper podczas uruchamiania aplikacji:

Stopwatch sw=Stopwatch.StartNew(); 

następnie kwerendy właściwości sw.Elapsed podczas biegu wykonania.

+0

To, czy wybrać jeden, czy drugi, nie jest kwestią precyzji, ale potrzeb. 'Process.GetCurrentProcess(). StartTime' nigdy nie będzie wywoływane w tym samym czasie' Stopwatch.StartNew() '! To zależy od tego, kiedy użytkownik chce rozpocząć pomiar czasu. :) –

+0

Czy na pewno Process.GetCurrentProcess zwraca czas od uruchomienia aplikacji? Właśnie zrobiłem czek: (DateTime.Now -Process.GetCurrentProcess(). StartTime) .TotalSeconds. W chwili, gdy aplikacja jest w górze, wydrukuję czas na konsolę. Rozpoczyna się od 16-17 sekund. To oczywiście za dużo, ponieważ Uruchomienie aplikacji zajęło maksymalnie 4 sekundy. –

+0

Interesujące. Dokumenty wydają się zgadzać ze mną. Jeśli tak rzeczywiście jest, powiedziałbym, że zasługuje na nowe pytanie. – spender

Powiązane problemy