Как сделать таймер обратного отсчета в asp.net веб-приложение (c#)?
Я создаю временный онлайн-тест в C# asp.net - ... Я создал его, используя локальное машинное время. Но в случае отключения базы данных или зависания системы таймер обратного отсчета должен начинаться с момента зависания машины или неожиданного отключения базы данных. Например, пользователь отвечает на вопросы в течение 10 минут и неожиданно повесил систему. После восстановления обратный отсчет должен начинаться с 10 минут. Кто-нибудь может помочь мне с кодированием на 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");
}
3 ответов
мой взгляд, является использование JavaScript для отсчета (встроенные) и чтобы передать ваши данные с помощью JSON, когда ДБ причину отключения вы передаете данные в JavaScript и с управлением Вам процедуры на обратный отсчет.
загрузите следующий файл javascript и поместите его в каталог веб-приложения: http://scripts.hashemian.com/js/countdown.js
и чем использовать что-то вроде этого:
<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>
Я думаю, что лучше взять поле в таблице и установить общее время для вопроса в нем и обновить это поле каждые 15/30 секунд (в соответствии с требуемой частотой) и на каждом обновлении вычесть значение 15/30 секунды от общего времени. и делайте это до тех пор, пока поле не будет иметь значение > 0.
для этого вы можете воспользоваться помощью timer (JavaScript timer) и ajax. отправить запрос на сервер для обновления этого поля.
с ajax я думаю, что лучше создать веб-сервис (который будет обновите значение этого поля) и вызовите его с помощью ajax на основе JavaScript timer. ну, вы также можете использовать таймер ajax.
ссылка на таймер javascript:
http://dotnetacademy.blogspot.com/2010/09/timer-in-javascript.html