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