Comment faire un compte à rebours dans l'application web de asp.net (C #)?
-
08-10-2019 - |
Question
Je crée chronométré test en ligne en C # asp.net. Je l'ai créé en utilisant le temps de la machine locale. Mais dans le cas de déconnexion de base de données ou blocage du système, le compte à rebours doit commencer à partir du moment où la machine a pendu ou disconnectivity base de données inattendue. Par exemple, l'utilisateur répond aux questions de 10 minutes et de façon inattendue système pendues. Après la reprise du compte à rebours doit commencer à partir de 10 minutes. Quelqu'un peut-il vous plaît aider moi avec le codage en C #?
J'ai utilisé le code suivant, mais ce ne est pas utile dans le scénario ci-dessus.
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");
}
La solution
Mon opinion est d'utiliser le javascript pour le compte à rebours (intégré ainsi) et de transmettre vos données DB avec JSON, lorsque la déconnexion de la cause DB vous passez des données à javascript et avec un contrôle que vous Procéd le compte à rebours.
Télécharger le fichier javascript suivant et mis dans votre répertoire d'applications Web: http://scripts.hashemian.com/js/countdown.js
Et que d'utiliser quelque chose comme ceci:
<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>
Autres conseils
Je pense que mieux de prendre un champ dans le tableau et le temps total fixé pour question et mise à jour sur le terrain toutes les 15/30 secondes (selon la fréquence requise) et à chaque mise à jour de la valeur 15/30 substract seconde de temps total. et faire jusqu'à ce que le champ a une valeur> 0.
Pour cela, vous pouvez prendre l'aide de la minuterie (minuterie javascript) et ajax. à envoyer une demande au serveur de mettre à jour ce champ.
avec ajax je pense que son meilleur pour créer un webservice (qui mettra à jour la valeur de ce champ) et l'appeler à l'aide ajax sur la base de la minuterie javascript. Eh bien, vous pouvez également utiliser ajax timer.
javascript référence timer:
http://dotnetacademy.blogspot.com/2010/09/ minuterie en javascript.html
Vous pouvez utiliser le Registre Windows pour stocker le compteur.