Какое минимальное время вам нужно для Thread.Sleep (), чтобы гарантировать, что DateTime.Now отличается? - PullRequest
3 голосов
/ 13 октября 2010

Какое минимальное время вам нужно, чтобы Thread.Sleep () гарантировал, что DateTime.Now отличается?

Учитывая, что DateTime имеет свойство Ticks, можно утверждать, что будет достаточно следующего:

Thread.Sleep(TimeSpan.FromTicks(1));

что было бы хорошо, но это гарантирует последующие вызовы DateTime.Now не равны?

ОБНОВЛЕНИЕ: Появляется, что точность DateTime зависит от аппаратного обеспечения, поэтому вместо этого я собираюсь использовать следующееметод:

public static void SleepUntilDateTimeChanges()
    {
        DateTime now = DateTime.Now;
        while(now == DateTime.Now)
            Thread.Sleep(TimeSpan.FromMilliseconds(1));
    }

1 Ответ

5 голосов
/ 13 октября 2010

«Тик» составляет 100 наносекунд.Или 1/10 000 миллисекунды.Thread.Sleep работает на миллисекундах .Хотя это правда, принимает a TimeSpan, значение меньше миллисекунды будет игнорироваться (т. Е. Равно нулю).Согласно @wal, разрешение может быть гарантировано только за 10 миллисекунд.Если вы подождете эту сумму, вы получите уникальные DateTime экземпляры.

См. Также это объяснение Эрика Липперта, которое проливает немного света на точность DateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...