2010-11-11 26 views
6

Je crée un test en ligne Timed en C# asp.net.J'ai créé en utilisant l'heure de la machine locale. Mais dans le cas de la déconnexion de la base de données ou du blocage du système, le compte à rebours doit démarrer à partir du moment où la machine a pendu ou de la déconnectivité imprévue de la base de données.Par exemple, l'utilisateur répond aux questions pour 10mins. Après la récupération, le compte à rebours doit commencer à partir de 10 minutes. Quelqu'un peut-il s'il vous plaît m'aider avec le codage en C#? J'ai utilisé le codage suivant, mais ce n'est pas utile dans le scénario ci-dessus.Comment faire un compte à rebours dans l'application 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

Référez-vous à [This] (http://www.c-sharpcorner.com/UploadFile/babzi.naaz/3800/?ArticleID=c62a44ff-87cb-4a00-9956-8ed42bc4ce31) lien – MAC

Répondre

1

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 vous procédez au compte à rebours.

Télécharger le fichier javascript suivant et mettez 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> 
1

Je pense que mieux de prendre un champ dans le tableau et définir le temps total pour la question en elle et mettre à jour ce champ sur toutes les 15/30 secondes (selon la fréquence requise) et à chaque mise à jour Soustraire la valeur 15/30 secondes du temps total. et faites ceci jusqu'à ce que le champ ait la valeur> 0.

pour ceci vous pouvez prendre l'aide du temporisateur (temporisateur de javascript) et de l'ajax. envoyer une requête au serveur pour mettre à jour ce champ. Avec ajax je pense qu'il vaut mieux créer un webservice (qui mettra à jour la valeur de ce champ) et l'appeler en utilisant ajax sur la base du timer javascript. Eh bien, vous pouvez également utiliser la minuterie ajax.

javascript référence minuterie

:

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

+0

Oui, c'est probablement le meilleur façon pour le javascript et le serveur de toujours savoir que l'autre est en cours d'exécution. Cependant, vous devez savoir qu'un utilisateur peut désactiver javascript et qu'un utilisateur malveillant peut envoyer de fausses requêtes au service Web. – tster

0

Vous pouvez utiliser Windows registery pour stocker le compteur.

+0

Pas à partir d'une page Web .... Aussi, je pense que l'utilisation du registre pour ces choses est mal vu ces jours-ci. – tster