比Thread.Sleep(1)更快?

时间:2014-11-21 10:05:45

标签: c# .net multithreading sleep

我需要我的程序等待大约1ms。 要做到这一点,我使用:

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等离子)。 有人通过密码保护配置区域,没有人记住密码。 由于密码只能通过鼠标输入,我正在写一个强制暴力程序来获取该密码。

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

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

1 个答案:

答案 0 :(得分:7)

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

它不会等待1毫秒。它会等待至少 1毫秒。

根据MSDN

  

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

当操作系统再次获取线程时,可能已超过1毫秒。当您增加等待时间时,差异将不那么明显。如果你迭代并等待1ms,差异可能相对非常大。