我有这个代码:
public void replay() {
long previous = DateTime.Now.Ticks;
for (int i = 0; i < 1000; i++) {
Thread.Sleep(300);
long cur = DateTime.Now.Ticks;
Console.WriteLine(cur - previous);
previous = cur;
}
}
它作为一个单独的线程调用,如下所示:
MethodInvoker replayer = new MethodInvoker(replay);
replayer.BeginInvoke(null, null);
但是,如果我查看输出,它的行为会很奇怪。它i
成对输出。例如,它会等待一个完整的等待,然后输出i
,然后也快速输出下一个i
,然后再次等待。为什么会这样,我该如何纠正?
它输出这个:
3125040
2968788
2968788
2968788
3125040
2968788
2968788
2968788
3125040
2968788
2968788
2968788
3125040
如果我将睡眠时间增加到一秒钟以上,则不会发生这种情况。