在 C# 中使用计时器时如何延迟执行

How to delay an execution when using a timer in C#

我正在使用定时器从相机捕捉图像。 我正在对此捕获图像进行一些处理并检测此图像上的一个点并将该点传递给机器人。在通过那一点之前,我必须等待一些可变的时间。目前我使用 Thread.sleep(waitingTime)。但这会使我的 UI 在一段时间内无响应。我怎样才能延迟我的代码?

private void timer1_Tick(object sender, EventArgs e)
{
    Image<Bgr, Byte> imSource = cap.RetrieveBgrFrame();

    //some processing here
    //--------------------
    //--------------------

    Thread.Sleep(waitingTime);
    sendToRobot(data);
}

也许试试任务。延迟([delayperiod]);

试试这个

Task.Factory.StartNew(() =>
{

    Thread.Sleep(waitingTime);
    sendToRobot(data);
 });

只要 sendToRobot 使用正确的线程仔细更新 UI,这应该可以工作。