У меня есть этот код:
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
Если я увеличу сон более чем на секунду, этого не произойдет.