Как я могу RedirectToAction в обратном вызове $ .ajax?

Я использую $. {...

Я видел другие публикации пользователей, которые показывают, что время измерения секундомера, потраченное в "Thread.Sleep (5000)", составляет около 5000 мс.

Но моя программа дает следующие результаты

for (int i = 0; i < 20; ++i)
{
    Stopwatch sw = Stopwatch.StartNew();
    DateTime start = DateTime.Now;
    Thread.Sleep(5000);
    sw.Stop();
    Console.Out.WriteLine(
        "StopWatch Diff:" + 
        sw.ElapsedMilliseconds.ToString()); 
    Console.Out.WriteLine(
        "DateTime Diff:" + 
        DateTime.Now.Subtract(start).TotalMilliseconds.ToString());
}

StopWatch Diff:1684
DateTime Diff:5262.592
StopWatch Diff:1625
DateTime Diff:4997.12
StopWatch Diff:1604
DateTime Diff:4997.12
StopWatch Diff:1601
DateTime Diff:4997.12
StopWatch Diff:1690
DateTime Diff:4997.12
StopWatch Diff:1603

Это только я кто наблюдает за этим поведением? Почему секундомер измеряет 1,6 секунды, когда на самом деле прошло 5 секунд. Это время, когда поток действительно работает?

14
задан RB. 4 April 2013 в 10:15
поделиться

1 ответ

Класс Секундомер является ненадежным .

Это ненадежно для процессоров, у которых нет постоянной тактовой частоты (большинство процессоров могут снизить тактовую частоту для экономии энергии). Это подробно объясняется здесь .

19
ответ дан 1 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: