在 Windows 窗体应用程序中调用 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).如果您还没有使用过 timeBeginPeriod设置您的最低分辨率,您将每 15 毫秒唤醒一次。即使在将最小分辨率设置为 1 毫秒后,您仍然只会每 3-4 毫秒醒来一次。
为了获得毫秒级的计时器粒度,您必须使用 Win32 多媒体计时器 (C# wrapper)。
关于c# - Thread.Sleep(1) 在 C# 中有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/508208/