ASP.NET Webアプリケーション(C#)でカウントダウンタイマーを作成する方法は?

StackOverflow https://stackoverflow.com/questions/4151532

質問

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");
}
役に立ちましたか?

解決

私の意見では、JavaScriptをカウントダウンに使用し(埋め込まれています)、DBデータをJSONで渡すことです。DBが切断を引き起こすと、データをJavaScriptに渡し、コントロールをカウントダウンに渡すことです。

次のJavaScriptファイルをダウンロードして、Webアプリケーションディレクトリに入れます。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秒ごと(必要な頻度に従って)にそのフィールドを更新する方が良いと思います。フィールドに値が> 0になるまでこれを行います。

このために、タイマー(JavaScriptタイマー)とAjaxのヘルプを取ることができます。そのフィールドを更新するためにサーバーにリクエストを送信します。

Ajaxを使用すると、Webサービス(そのフィールドの値を更新する)を作成し、JavaScriptタイマーに基づいてAjaxを使用して呼び出す方が良いと思います。さて、Ajaxタイマーも使用できます。

JavaScriptタイマーリファレンス:

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

Windows Registeryを使用してカウンターを保存できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top