Calcular tiempo en segundos entre dos eventos

04/08/2009 - 22:54 por Gustavo | Informe spam
Hola que tal !

tengo lo siguiente, en una forma asp tengo varios controles, mi idea es
calcular el tiempo en el que un usuario realiza la acción click, es decir,
hay botones, linkbuttons y quiero calcular el tiempo en el que realiza una
acción y luego otra.

Inicio una variable DateTime timeCargaPrincipal cuando se carga la página
principal, luego en cada evento click tengo una variable también DateTime, y
revisando la documentación, uso TimeSpan:

DateTime timeCargaPrincipal, timeboton1, //variables globales
double segundostotales;

timeCargaPrincipal = DataTime.Now; //esta se declara a en el Page_Load

//en el boton1 cuando el usuario hace click
timeboton1 = DateTime.Now;
TimeSpan duracion = timeboton1 - timeCargaPrincipal;
segundostotales = duracion.TotalSeconds;
Response.Write(segundostotales);

el cálculo me muestra que el intervalo es de 0 segundos, cuando en realidad
sí hay tiempo que trancurrió, he visto en la depuración que los tiempos
timeCargaPrincipal y timeboton1 tienen el mismo valor, por lo que el
resultado es 0, pero haciendo paso a paso, sí me da el valor. tiene que ver
que al hacer click se recarga la página principal?

Les agradezco de antemano su apoyo.
 

Leer las respuestas

#1 Alberto Poblacion
05/08/2009 - 10:27 | Informe spam
"Gustavo" wrote in message
news:
tengo lo siguiente, en una forma asp tengo varios controles, mi idea es
calcular el tiempo en el que un usuario realiza la acción click, es decir,
hay botones, linkbuttons y quiero calcular el tiempo en el que realiza una
acción y luego otra.

Inicio una variable DateTime timeCargaPrincipal cuando se carga la página
principal, luego en cada evento click tengo una variable también DateTime,
y
revisando la documentación, uso TimeSpan:

DateTime timeCargaPrincipal, timeboton1, //variables globales
double segundostotales;

timeCargaPrincipal = DataTime.Now; //esta se declara a en el Page_Load

//en el boton1 cuando el usuario hace click
timeboton1 = DateTime.Now;
TimeSpan duracion = timeboton1 - timeCargaPrincipal;
segundostotales = duracion.TotalSeconds;
Response.Write(segundostotales);

el cálculo me muestra que el intervalo es de 0 segundos, cuando en
realidad
sí hay tiempo que trancurrió, he visto en la depuración que los tiempos
timeCargaPrincipal y timeboton1 tienen el mismo valor, por lo que el
resultado es 0, pero haciendo paso a paso, sí me da el valor. tiene que
ver
que al hacer click se recarga la página principal?

Les agradezco de antemano su apoyo.




Cada vez que haces click en el botón, se ejecuta primero el Page_Load y
luego se ejecuta el Click del botón. Por eso tus dos variables tienen
siempre el mismo valor. El remedio es poner en el Page_Load un "if
(!IsPostBack)..." para distinguir la primera vez que se carga la página de
las cargas posteriores.

void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["timeCargaPrincipal"] = DateTime.Now;
}
}

Observa que el valor lo guardamos en el ViewState en lugar de guardarlo en
una variable de clase, ya que las variables de clase se pierden a cada
PostBack.

Para leerlo en el Click del botón haríamos esto:

DateTime timeCargaPrincipal = (DateTime)ViewState["timeCargaPrincipal"];
timeboton1 = DateTime.Now;
TimeSpan duracion = timeboton1 - timeCargaPrincipal;

Preguntas similares