我需要我的程序等待大约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:有一个类似的问题,但没有解决:(
答案 0 :(得分:7)
我认为问题在于您对Thread.Sleep
的理解。
它不会等待1毫秒。它会等待至少 1毫秒。
根据MSDN:
操作系统不会安排线程执行指定的时间。
当操作系统再次获取线程时,可能已超过1毫秒。当您增加等待时间时,差异将不那么明显。如果你迭代并等待1ms,差异可能相对非常大。