如何限制while循环中的CPU使用率

Cyc*_*one 2 vb.net limit cpu-usage while-loop

你如何限制while循环的CPU?

在这种情况下,while循环内部的代码:

Private Sub wait(ByVal time)
        Dim sw As New Stopwatch
        sw.Start()
        Do While sw.ElapsedMilliseconds < time And StillOpen = True
            Application.DoEvents()
        Loop
        sw.Stop()
    End Sub
Run Code Online (Sandbox Code Playgroud)

但现在,这是问题所在.这个循环允许while循环每秒运行一次,每秒一次,并且waitsub正在导致这个延迟,正如它应该的那样.

如何限制占用的CPU?出于某种原因,我的任务经理表示它需要50个CPU来运行这个简单的任务,但它应该不会超过1或2.虽然经理说它占用了那么多的CPU,但我的计算机速度并没有受到影响所有这些都是奇怪的,因为它是一台已有两年历史的笔记本电脑.

我不希望任何用户对此感到恐惧,但是知道这些天人们是怎样的......

无论如何,语言是vb.net.有人可以帮帮我吗?

谢谢!

编辑:澄清一下,该代码不在while循环本身内,但调用子程序是,即 wait(1000)

Pat*_*rez 7

使用计时器事件!!! 几乎没有cpu的努力.


Fax*_*ton 6

你总是可以在循环的迭代之间执行某种睡眠......

我不熟悉VB.NET,但持续100-200ms可能足以降低CPU使用率.

例如:

Do while (...)
    Application.blah();
    System.Threading.Thread.Sleep(150);
End
Run Code Online (Sandbox Code Playgroud)

编辑经过一些研究,我认为你想要的功能是:System.Threading.Thread.Sleep()