private void timer1_Tick(object sender, EventArgs e)
{
pictureBox1.Top -= 1;
timer1.Stop();
}
答案 0 :(得分:0)
您可以使用计数器指定何时停止计时器:如果您的计时器延迟为50毫秒并且您希望“延迟”为5秒,则使用例如100初始化计数器。然后使用
private void timer1_Tick(object sender, EventArgs e)
{
pictureBox1.Top -= 1;
counter--;
if (counter==0)
timer1.Stop();
}
答案 1 :(得分:0)
您可以使用其他计时器类:System.Timers.Timer
在5秒内初始化那个,处理Elapsed事件,以便停止第一个计时器。 一定要让它的线程安全! Thread-Safe Calls to a Windows Forms Control
答案 2 :(得分:0)
我是这样做的,我不认为使用计时器是最好的选择,但是要满足你的需求。
Thread runner;
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
timer1.Interval = 1000;
textBox1.Text = "Amazing"; // initial process
}
private void timer1_Tick(object sender, EventArgs e)
{
if (runner != null && runner.IsAlive)
return;
runner = new Thread(new ThreadStart(() =>
{
// run your process here
Thread.Sleep(5000);
StopRunner();
}));
runner.Start();
}
private void StopRunner()
{
timer1.Stop();
// post process here
}
它的作用是处理你的实际请求,然后它会退出计时器。我检查了线程是否存活,因此它不会重新处理它。