gpt4 book ai didi

c# - C#程序使用秒表卡住以对 Action 计时

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:04 25 4
gpt4 key购买 nike

我有一个控制灯光的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();


}


我还有一些其他功能,它们在不同的时间是相同的,但我尚未在任何地方调用它,因为我无法使它正常工作。

最佳答案

您的代码将永远无法正常工作,因为您正忙于等待来阻塞UI线程。这是您的程序似乎死机的原因。改用计时器或异步/等待

async  void DisplayRedDot(int duration)
{
oBlynclightController.Display(BlynclightController.Color.Red);
await Task.Delay(duration);
oBlynclightController.Display(BlynclightController.Color.Off);
}

关于c# - C#程序使用秒表卡住以对 Action 计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22141222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com