【发布时间】:2014-03-03 07:44:20
【问题描述】:
我有一个控制灯的 Windows 窗体程序。这种灯有自己的类别。我可以做一些事情,比如关闭它并改变颜色等。我可以毫无问题地做到这一点。然而,我想要做的是让灯亮一段时间,即 100 毫秒或 300 毫秒(取决于使用情况)。
我曾尝试使用秒表来执行此操作,但是当我单击要执行此操作的按钮时,它会冻结程序。灯亮了,然后没有熄灭,我无法使用我的停止按钮来关闭它。
程序加载灯并对其进行初始化,并显示一条警报,说明它已完成此操作并检测到一盏灯。然后我用这个:
private void Red_Click_1(object sender, EventArgs e)
{
//Displays Red
System.Threading.Tasks.Task.Factory.StartNew((Action)delegate()
{
displayRedDot();
});
}
这是 displayRedDot()
public void displayRedDot()
{
System.Diagnostics.Stopwatch clock1 = new System.Diagnostics.Stopwatch();
long elapsedTime = clock1.ElapsedMilliseconds;
clock1.Start();
while (elapsedTime < 100)
{
oBlynclightController.Display(BlynclightController.Color.Red);
}
oBlynclightController.Display(BlynclightController.Color.Off);
clock1.Stop();
}
我还有一些其他函数,它们与 this 相同,但时间不同,我还没有在任何地方调用过,因为我无法让它工作。
【问题讨论】:
-
你为什么将问题标记为 Asp.Net?
-
除了 LB 的回答,尝试调查 BackgroundWorker 类。这是开始学习线程的好方法。