【发布时间】:2014-11-21 10:05:45
【问题描述】:
我需要我的程序等待大约 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 等离子)。 有人用密码保护了配置区域,但没有人记得密码。 由于密码只能通过鼠标输入,我正在编写一个暴力破解程序来获取该密码。
问题是我需要在每个输入的数字之间等待大约 1ms。
更新 2:有一个类似的问题,但没有解决 :(
【问题讨论】:
-
你为什么要阻止你的程序正好 1 毫秒?
-
记住
for循环也会减慢它的速度,Console.WriteLine和计时器本身也会减慢速度。它*可能会停止程序 1 毫秒,但是您额外的for循环和计时器会减慢它的速度。我发现将输出写入屏幕最会减慢一切,也许将值分配给Console.WriteLine之前的变量,然后输出该变量。 -
经典XY problem.
-
似乎“真正的”副本在这里:stackoverflow.com/questions/9518106/…
标签: c# .net multithreading sleep