在Windows窗体应用程序中,Thread.Sleep(1)如以下代码所示,调用的影响是什么:
Thread.Sleep(1)
public Constructor() { Thread thread = new Thread(Task); thread.IsBackground = true; thread.Start(); } private void Task() { while (true) { // do something Thread.Sleep(1); } }
该线程会占用所有可用的CPU吗?
我可以使用什么配置技术来测量此线程的CPU使用率(任务管理器除外)?
如前所述,您的循环不会占用CPU。
但是请注意 :Windows 不是 实时操作系统,因此您 不会 从Thread.Sleep(1)每秒获得1000次唤醒。如果尚未使用timeBeginPeriod设置最低分辨率,则大约每15毫秒唤醒一次。即使将最低分辨率设置为1 ms,您仍然只能每3-4 ms唤醒一次。
为了获得毫秒级的计时器粒度,您必须使用Win32多媒体计时器(C#包装器)。