2010-11-11 87 views
6

Estoy creando una prueba en línea programada en C# asp.net. La he creado utilizando la hora local de la máquina. Pero en el caso de desconexión de la base de datos o bloqueo del sistema, el temporizador de cuenta atrás debe comenzar desde el momento en que la máquina se colgó o la desconexión inesperada de la base de datos. Por ejemplo, el usuario responde las preguntas durante 10 minutos e inesperadamente cuelga el sistema. Después de la recuperación, la cuenta atrás debe comenzar desde 10 minutos. ¿Puede alguien ayudarme con la codificación en C#? He utilizado la siguiente codificación, pero no es útil en el escenario anterior.¿Cómo hacer un temporizador de cuenta atrás en la aplicación web asp.net (C#)?

int totalTime = (Convert.ToInt32(ViewState["totaltime"])) * 60; 

    DateTime startTime = (DateTime)ViewState["startTime"]; 
    TimeSpan elaspedTime = DateTime.Now.Subtract(startTime); 
    Literal1.Text = elaspedTime.Hours.ToString() + "h" + ":" + elaspedTime.Minutes.ToString() + "m" + ":" + elaspedTime.Seconds.ToString() + "s"; 

    int finish = Convert.ToInt32(elaspedTime.TotalSeconds); 

    int remaingsec = (totalTime - finish); 
    TimeSpan remainingtime = TimeSpan.FromSeconds(remaingsec); 
    string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s", 
        remainingtime.Hours , 
        remainingtime.Minutes, 
        remainingtime.Seconds, 
        remainingtime.Milliseconds); 

    LIteral2.Text = answer; 
     if (totalTime == finish) 
     { 
      lnkFinish_Click(sender, e); 
      Response.Redirect(@"~/Error.aspx"); 

     } 
+0

Consulte [Este] (http://www.c-sharpcorner.com/UploadFile/babzi.naaz/3800/?ArticleID=c62a44ff-87cb-4a00-9956-8ed42bc4ce31) enlace – MAC

Respuesta

1

Mi opinión es el uso de JavaScript para la cuenta atrás (incrustado también) y para pasar sus datos DB con JSON, cuando la causa DB desconexión se pasa algunos datos a javascript y con un control que procedes a la cuenta regresiva.

descargue el siguiente archivo javascript y pone en su directorio de aplicaciones web: http://scripts.hashemian.com/js/countdown.js

Y que usar algo como esto:

<script type="text/javascript"> 
     TargetDate = "12/25/207 12:01 AM"; 
     BackColor = "red"; 
     ForeColor = "white"; 
     CountActive = true; 
     CountStepper = -1; 
     LeadingZero = true; 
     DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds."; 
     FinishMessage = "It is here!"; 
    </script> 
1

Creo que es mejor tomar un campo en la tabla y establecer el tiempo total para la pregunta en ella y actualizar ese campo en cada 15/30 segundos (según su frecuencia específica) y en cada actualización de restar el valor 15/30 segundos del tiempo total. y haga esto hasta que el campo tenga valor> 0.

para esto puede tomar la ayuda del temporizador (javascript timer) y ajax. para enviar una solicitud al servidor para actualizar ese campo.

con ajax creo que es mejor crear un servicio web (que actualizará el valor de ese campo) y llamarlo usando ajax en base al temporizador de JavaScript. también puedes usar el temporizador ajax.

Javascript temporizador de referencia:

http://dotnetacademy.blogspot.com/2010/09/timer-in-javascript.html

+0

Sí, este es probablemente el mejor forma de que javascript y el servidor siempre sepan que el otro se está ejecutando. Sin embargo, debe tener en cuenta que un usuario puede desactivar javascript y un usuario malintencionado puede enviar solicitudes falsas al servicio web. – tster

0

Se pueden utilizar ventanas registery para almacenar el contador.

+0

No desde una página web ... Además, creo que usar el registro para estas cosas está mal visto en estos días. – tster

Cuestiones relacionadas