小编典典

C#中的Thread.Sleep(1)有什么影响?

c#

在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使用率(任务管理器除外)?


阅读 1355

收藏
2020-05-19

共1个答案

小编典典

如前所述,您的循环不会占用CPU。

但是请注意 :Windows 不是 实时操作系统,因此您 不会
从Thread.Sleep(1)每秒获得1000次唤醒。如果尚未使用timeBeginPeriod设置最低分辨率,则大约每15毫秒唤醒一次。即使将最低分辨率设置为1 ms,您仍然只能每3-4
ms唤醒一次。

为了获得毫秒级的计时器粒度,您必须使用Win32多媒体计时器(C#包装器)。

2020-05-19