2012-04-15 19 views
8

Estoy portando una aplicación de ActionScript3.0 (Flex) a C# (WPF) .AS3.0 tiene una práctica utilidad llamada getTimer() que devuelve tiempo desde que la máquina virtual Flash se inicia en milisegundos. Estaba buscar en C# a través de clases comoObtenga el tiempo transcurrido desde el inicio de la aplicación

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

pero no encontró nada mejor que this.It parece una característica muy básica para me.For ejemplo Unity3D que se ejecuta en Mono tiene algo familiar. ¿Extraño algo de utilidad aquí?

Gracias de antemano.

Respuesta

26

Process.GetCurrentProcess().StartTime es tu amigo.

.so para conseguir Tiempo transcurrido desde el inicio:

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

alternativa, si necesita más definición, System.Diagnostics.Stopwatch podría ser preferible. Si es así, iniciar un cronómetro cuando su aplicación se inicia:

Stopwatch sw=Stopwatch.StartNew(); 

luego consultar la propiedad sw.Elapsed durante la carrera de ejecución.

+0

Si elegir uno u otro no es una cuestión de precisión sino de necesidades en su lugar. 'Process.GetCurrentProcess(). StartTime' nunca se invocará al mismo tiempo que' Stopwatch.StartNew() '! Por lo tanto, depende de cuándo el usuario desea iniciar el cronometraje. :) –

+0

¿Estás seguro de que Process.GetCurrentProcess devuelve tiempo desde que se inicia la aplicación? Acabo de hacer una comprobación: (DateTime.Now -Process.GetCurrentProcess(). StartTime) .TotalSeconds. En el momento en que la aplicación está activada, imprimo la hora en la consola. Comienza de 16 a 17 segundos. Obviamente es demasiado porque La aplicación comenzó en un máximo de 4 segundos. –

+0

Interesante. Los documentos parecen estar de acuerdo conmigo. Si este es realmente el caso, diría que merece una nueva pregunta. – spender

Cuestiones relacionadas