如何在计时器后设置状态.过去了
本文关键字:设置 状态 过去了 计时器 | 更新日期: 2023-09-27 18:36:56
我的问题可能很简单。在 c# 项目中,我尝试在 click
事件中设置不同类中实例的状态。问题是我想在经过一段时间后执行此操作,并且没有任何 c# 经验,我发现这很难完成。
提前感谢!!
我的代码如下:
public void button1_Click(object sender, EventArgs e)
{
kruispunt.zPad1.voetstoplicht1.setStatus(StoplichtStatus.Rood);
kruispunt.zPad1.voetstoplicht2.setStatus(StoplichtStatus.Rood);
this.Refresh();
}
最简单的方法是使用 async
(假设你使用的是 C# 5):
public async void button1_Click(object sender, EventArgs e)
{
await Task.Delay(Timespan.FromSeconds(5));
kruispunt.zPad1.voetstoplicht1.setStatus(StoplichtStatus.Rood);
kruispunt.zPad1.voetstoplicht2.setStatus(StoplichtStatus.Rood);
this.Refresh();
}
另一种选择是使用Timer
:
public void button1_Click(object sender, EventArgs e)
{
var timer = new System.Windows.Forms.Timer { Interval = 5000 };
timer.Tick += delegate
{
timer.Dispose();
kruispunt.zPad1.voetstoplicht1.setStatus(StoplichtStatus.Rood);
kruispunt.zPad1.voetstoplicht2.setStatus(StoplichtStatus.Rood);
this.Refresh();
}
timer.Start();
}
请注意,我使用的是 Windows 窗体计时器,而不是 System.Timers.Timer
或 System.Threading.Timer
;这是因为事件必须发生在 UI 线程中,否则对Refresh
的调用将失败。