Faster than Thread.Sleep(1)?

本文关键字:Sleep than Thread Faster | 更新日期: 2023-09-27 18:31:26

我需要我的程序等待大约 1 毫秒。为此,我使用:

System.Threading.Thread.Sleep(1)

但大约慢了 10 倍。

在以下程序中:

    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();
    for (int i = 0; i < 1000; i++ )
        System.Threading.Thread.Sleep(1);
    Console.WriteLine(stopWatch.ElapsedMilliseconds);

我得到作为输出:15110.

有没有办法只停止 1 毫秒?

更新1:为什么我需要这样做

在我工作的公司里,有一台由PC控制的机器(CNC Plasma)。有人通过密码保护了配置区域,但没有人记得密码。由于密码只能通过鼠标输入,因此我正在编写一个强制暴力程序来获取该密码。

问题是我需要在每个输入的数字之间等待大约 1 毫秒。

更新2:有一个类似的问题,但没有解决:(

Faster than Thread.Sleep(1)?

我认为问题在于您对Thread.Sleep的理解。

它不会等待正好 1 毫秒。它将等待至少 1 毫秒。

根据MSDN:

操作系统不会在指定的时间内安排线程执行。

当操作系统再次选取线程时,可能已经过去了 1 毫秒以上。当您增加等待时间时,差异将不那么明显。如果迭代并等待 1 毫秒,差异可能相对较大。