【发布时间】:2013-08-13 12:45:22
【问题描述】:
我正在开发一个监视/控制软件,基本上,它读取输入(通过网络模块)并在处理它们后生成事件。
虽然输入可以取决于通信速度,并且可以在多线程中运行,但处理基本上是一个连续循环,基本上:
while (true)
{
readInputs();
process();
}
这似乎很简单,但正如您想象的那样,cpu 将达到 100%。 如果您想运行其他循环,主要用于定时事件。 因此,虽然进程可以在最后休眠,但定时事件不能。
我的问题是:在不让应用占用整个 CPU 周期的情况下,收集和处理输入的最佳方式是什么?
更新 1: 该应用程序是多线程的,并具有用户界面。 计时器用于更新用户界面(来自共享内存 - 已处理的内容和输入状态)。 While 循环用于输入读取和处理。
【问题讨论】:
-
您如何阅读您的输入?
Console.ReadXXX方法不会破坏 CPU.. -
@SimonWhitehead "读取输入(通过网络模块)" --> 不是控制台。
-
傻我。不幸的是,我今晚的英语听不懂:(
标签: c# input while-loop