线程获得100%CPU非常快

oli*_*dev 7 .net c# parallel-processing multithreading cpu-usage

我在C#中实现了一个非常基本的线程:

private Thread listenThread;

public void startParser()
{
   this.listenThread = new Thread(new ThreadStart(checkingData));
   this.listenThread.IsBackground = true;
   this.listenThread.Start();
}

private void checkingData()
{
   while (true)
   {

   }
Run Code Online (Sandbox Code Playgroud)

}

然后我立即获得100%的CPU.我想检查传感器数据是否在while(true)循环内读取.为什么会这样?

提前致谢.

Ale*_*Aza 15

while (true) 是什么杀死你的CPU.

您可以添加Thread.Sleep(X)给您,同时在再次检查之前为CPU提供一些休息.

而且,看起来你真的需要一个Timer.

请查看其中一个Timer类http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx.

使用尽可能高的拉动间隔的定时器,1秒,半秒.
您需要在CPU使用率和检查之间可以承受的最大延迟之间进行权衡.