Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计时器间隔未按预期工作_C#_Timer - Fatal编程技术网

C# 计时器间隔未按预期工作

C# 计时器间隔未按预期工作,c#,timer,C#,Timer,我是一个新手,试图学习定时器,这是我上面的代码。我想做一个持续1,8秒的计时器。然后我在按钮内部调用它,当它被单击时,第一次将标签设置为特定日期,然后我设置计时器的间隔并启动它,但是messagebox输出相同的时间(完全没有延迟)。这是因为您在创建计时器的同一代码中显示消息框。实际上: private void btnProveri_Click(object sender, EventArgs e) { lblRezultat.Text = DateTime.Now.ToString(

我是一个新手,试图学习定时器,这是我上面的代码。我想做一个持续1,8秒的计时器。然后我在按钮内部调用它,当它被单击时,第一次将标签设置为特定日期,然后我设置计时器的间隔并启动它,但是messagebox输出相同的时间(完全没有延迟)。

这是因为您在创建计时器的同一代码中显示消息框。实际上:

private void btnProveri_Click(object sender, EventArgs e)
{
    lblRezultat.Text = DateTime.Now.ToString();
    timer1.Interval = 1800;
    timer1.Start();
    MessageBox.Show(DateTime.Now.ToString());
}

private void timer1_Tick(object sender, EventArgs e)
{
    timer1.Enabled = true;
    timer1.Interval = 1800;
}
如您所见,消息框在您按下按钮时显示,而不是在计时器启动时显示。当计时器启动时,您所要做的就是将其设置为在1.8秒内再次启动,但此时您实际上不做任何其他操作


如果要在计时器启动后显示,则必须在计时器功能中执行。但是您可能需要小心,最终可能会出现大量对话框。

这是因为您在创建计时器的同一代码中显示消息框。实际上:

private void btnProveri_Click(object sender, EventArgs e)
{
    lblRezultat.Text = DateTime.Now.ToString();
    timer1.Interval = 1800;
    timer1.Start();
    MessageBox.Show(DateTime.Now.ToString());
}

private void timer1_Tick(object sender, EventArgs e)
{
    timer1.Enabled = true;
    timer1.Interval = 1800;
}
如您所见,消息框在您按下按钮时显示,而不是在计时器启动时显示。当计时器启动时,您所要做的就是将其设置为在1.8秒内再次启动,但此时您实际上不做任何其他操作


如果要在计时器启动后显示,则必须在计时器功能中执行。但是您可能需要小心,最终可能会出现大量对话框。

这是因为您在创建计时器的同一代码中显示消息框。实际上:

private void btnProveri_Click(object sender, EventArgs e)
{
    lblRezultat.Text = DateTime.Now.ToString();
    timer1.Interval = 1800;
    timer1.Start();
    MessageBox.Show(DateTime.Now.ToString());
}

private void timer1_Tick(object sender, EventArgs e)
{
    timer1.Enabled = true;
    timer1.Interval = 1800;
}
如您所见,消息框在您按下按钮时显示,而不是在计时器启动时显示。当计时器启动时,您所要做的就是将其设置为在1.8秒内再次启动,但此时您实际上不做任何其他操作


如果要在计时器启动后显示,则必须在计时器功能中执行。但是您可能需要小心,最终可能会出现大量对话框。

这是因为您在创建计时器的同一代码中显示消息框。实际上:

private void btnProveri_Click(object sender, EventArgs e)
{
    lblRezultat.Text = DateTime.Now.ToString();
    timer1.Interval = 1800;
    timer1.Start();
    MessageBox.Show(DateTime.Now.ToString());
}

private void timer1_Tick(object sender, EventArgs e)
{
    timer1.Enabled = true;
    timer1.Interval = 1800;
}
如您所见,消息框在您按下按钮时显示,而不是在计时器启动时显示。当计时器启动时,您所要做的就是将其设置为在1.8秒内再次启动,但此时您实际上不做任何其他操作


如果要在计时器启动后显示,则必须在计时器功能中执行。但是您可能需要小心,最终可能会出现大量的对话框。

看起来您希望执行以下操作:

buttonClick:
    Populate some text field.
    Start timer so that it calls timerTick in 1.8 seconds
    Display message box

timerTick:
    Restart timer so it calls this function in 1.8 seconds.
以下是工作控制台示例:

private void btnProveri_Click(object sender, EventArgs e)
{
    lblRezultat.Text = DateTime.Now.ToString();
    var timer = new System.Timers.Timer(1800);
    timer.Start();
    timer.Elapsed += timer1_Tick;
}

private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e)
{
    MessageBox.Show(DateTime.Now.ToString());
}

看起来您希望执行以下操作:

buttonClick:
    Populate some text field.
    Start timer so that it calls timerTick in 1.8 seconds
    Display message box

timerTick:
    Restart timer so it calls this function in 1.8 seconds.
以下是工作控制台示例:

private void btnProveri_Click(object sender, EventArgs e)
{
    lblRezultat.Text = DateTime.Now.ToString();
    var timer = new System.Timers.Timer(1800);
    timer.Start();
    timer.Elapsed += timer1_Tick;
}

private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e)
{
    MessageBox.Show(DateTime.Now.ToString());
}

看起来您希望执行以下操作:

buttonClick:
    Populate some text field.
    Start timer so that it calls timerTick in 1.8 seconds
    Display message box

timerTick:
    Restart timer so it calls this function in 1.8 seconds.
以下是工作控制台示例:

private void btnProveri_Click(object sender, EventArgs e)
{
    lblRezultat.Text = DateTime.Now.ToString();
    var timer = new System.Timers.Timer(1800);
    timer.Start();
    timer.Elapsed += timer1_Tick;
}

private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e)
{
    MessageBox.Show(DateTime.Now.ToString());
}

看起来您希望执行以下操作:

buttonClick:
    Populate some text field.
    Start timer so that it calls timerTick in 1.8 seconds
    Display message box

timerTick:
    Restart timer so it calls this function in 1.8 seconds.
以下是工作控制台示例:

private void btnProveri_Click(object sender, EventArgs e)
{
    lblRezultat.Text = DateTime.Now.ToString();
    var timer = new System.Timers.Timer(1800);
    timer.Start();
    timer.Elapsed += timer1_Tick;
}

private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e)
{
    MessageBox.Show(DateTime.Now.ToString());
}

试过了,它不做那件事。试过了,它不做那件事。试过了,它不做那件事。试过了,它不做那件事。