C#文本框延迟

时间:2016-01-14 11:06:04

标签: c# latency

我将数据从惯性传感器传输到C#应用程序。使用bool作为开关,我将传入的值打印到一系列文本框中,如下所示:

    if (bStreaming == true)
    {
     textboxTX.Invoke(new Action(() => textboxTX.Text = Convert.ToString(result[0])));
     textboxTY.Invoke(new Action(() => textboxTY.Text = Convert.ToString(result[1])));
     textboxTZ.Invoke(new Action(() => textboxTZ.Text = Convert.ToString(result[2])));
    }

问题是,一旦我开始这个循环,我的应用程序的其余部分就会大大减慢并开始滞后。我做错了吗?我已经尝试在新线程中启动循环,并看到相同的结果。

2 个答案:

答案 0 :(得分:3)

如果数据速率很高,那么您应该考虑使用批量更新。 不要在收到数据后立即更新,而是考虑每秒更新一次,或者当邮件数超过阈值时。

您可以使用后台工作程序处理数据并在某些时间间隔更新UI。您可以参考this SO question

答案 1 :(得分:1)

什么线程调用invoke方法无关紧要。如果它被紧紧地调用,那么无论如何都会耗尽你的资源。在每次迭代之前尝试await Task.Delay(millis) while (true) { var updateFrequency = Task.Delay(1000); if (bStreaming == true) { textboxTX.Invoke(new Action(() => textboxTX.Text = Convert.ToString(result[0]))); textboxTY.Invoke(new Action(() => textboxTY.Text = Convert.ToString(result[1]))); textboxTZ.Invoke(new Action(() => textboxTZ.Text = Convert.ToString(result[2]))); } await updateFrequency; } 一段时间。您甚至可以将其用作最短时间"使用以下代码:

{{1}}