2

あらかじめ設定した時間でタイマーを止めたい。学生が所定の時間後に試験を続行できないオンライン試験アプリケーションを作成しています。タイマーを実装しましたが、うまく機能していますが、1時間20分後にタイマーが自動的に停止するようにしたいと考えています。だから私の質問は、その条件をどこに書くかということです? ASP.net C# を使用しています。私のサンプルコードは次のとおりです。

static DateTime dt;
int m_StartTime = Environment.TickCount;
long m_Interval = new TimeSpan(0, 1, 0).Ticks;

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        dt = new DateTime(2011, 1, 1, 0, 0, 0);
        Timer1.Enabled = false;
        Timer1.Interval = 1000;
    }
}
protected void Timer1_Tick(object sender, EventArgs e)
{
    dt = dt.AddSeconds(10);
    Label1.Text = dt.ToString("H:mm:ss");
    if (Environment.TickCount - m_StartTime > m_Interval)
    {
        Timer1.Enabled=false;            
    }  


}
protected void start_Click(object sender, EventArgs e)
{
    Timer1.Enabled = true;
}
4

4 に答える 4

2

タイマーを開始するときにティック数を保存Environment.TickCountし、Timer1_Tickイベントで現在のティック数が保存されているかどうかを確認できると思います-保存されたティック数は間隔よりも大きくなります。次に、タイマーを停止します。次のように比較する値を取得できます。new TimeSpan(1, 20, 0).Ticks

...
Timer1.Enabled = true;
m_StartTime = Environment.TickCount
m_Interval = new TimeSpan(1, 20, 0).Ticks;
...

protected void Timer1_Tick(object sender, EventArgs e)
{
    dt = dt.AddSeconds(1);
    Label1.Text = dt.ToString("H:mm:ss");    
    if (Environment.TickCount - m_StartTime > m_Interval)
    {
        Timer1.Stop();   
    }
}

もちろん、変数などではなく定数を作成することもできます。これはアイデアを説明するための単なる例です。

PSところで、文字列の代わりにブール値のstartstopが必要なようです。

于 2013-07-01T08:27:31.560 に答える
0
public partial class _Default : System.Web.UI.Page
{
   static DateTime dt = new DateTime(2014,9,1,0,0,0,000);
   Timer t = new Timer();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Timer1.Enabled = false; 
            Timer1.Interval = 1;
            lbl.Text = dt.ToLongTimeString() + ":" + dt.Millisecond;
        }
    }

protected void Timer1_Tick(object sender, EventArgs e)
{
    dt = dt.AddMilliseconds(1);
    lbl.Text = dt.ToLongTimeString() + ":" + dt.Millisecond;
}


protected void Reset_Click(object sender, EventArgs e)
{
    Timer1.Enabled = false; //For stop the timer
    dt = new DateTime(2014, 9, 1, 0, 0, 0, 000);
    lbl.Text = dt.ToLongTimeString() + ":" + dt.Millisecond;

}
protected void Pause_Click(object sender, EventArgs e)
{
    Timer1.Enabled = false; //For stop the timer

}
protected void Start_Click(object sender, EventArgs e)
{
    Timer1.Enabled = true; // For starting the timer
}

}

于 2014-09-18T14:04:53.130 に答える