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:
Mostrar la cita
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