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");
}
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top