【发布时间】:2015-01-18 08:50:06
【问题描述】:
我正在考虑在某事完成时使用类似指示灯的 LED 来显示(绿色到红色)。
我当前的代码是这样的:
bool saveSingleSampleDone = false;
private void btnSingleSampleData_Click(object sender, EventArgs e)
{
LEDindicator.Image = global::OnlineData.Properties.Resources.green_indicator;
LEDindicator.Refresh();
while (!saveSingleSampleDone);
if (saveSingleSampleDone)
{
LEDindicator.Image = global::OnlineData.Properties.Resources.red_indicator;
LEDindicator.Refresh();
}
}
saveSingleSampleDone 标志是从正在运行的线程触发的。
问题是代码会因为while (!saveSingleSampleDone); 语句而挂起,而且这种写法也不整洁。
我正在考虑在线程中启动一个计时器来跟踪事件的开始和结束,但我的问题是有没有更优雅的方法来实现指示而不使用计时器?
【问题讨论】:
-
所以您想要让 LED 闪烁:计时器就是答案。在您的点击事件处理程序中启动它,并在计时器到期时恢复它。记住要弄清楚如果在计时器到期之前还有另一个点击事件会发生什么(重新启动计时器或允许现有的计时器继续是有意义的,但您需要决定)。