Разница между ElapsedTicks, ElapsedMilliseconds, прошло.Прошли миллисекунды.TotalMilliseconds? (С#)

Я полностью запутался между этими 4. В чем разница между ElapsedMilliseconds (long), ElapsedTicks (long), прошедшими.TotalMilliseconds (double)и истекли.Миллисекунды (int)?

У меня есть функция

    {
        Stopwatch sw = new Stopwatch();

        sw.Start();
        MyTimeConsumingAction();
        sw.Stop();

        sw.//what?
    }

Как получить правильное время, затрачиваемое моим длительным процессом из истекшего свойства объекта секундомера в миллисекундах?

Edit: я пробовал документацию msdn, но там нет ничего подробного..

4 ответов


прошедшее.TotalMilliseconds (double) возвращает общее количество целых и дробных миллисекунд, прошедших с момента создания

например, секундомер, остановленный на 1.23456 секунд, вернет 1234.56 в этом свойстве. См.TimeSpan.TotalMilliseconds на MSDN

прошедшее.Миллисекунды (int) возвращает количество целых миллисекунд в текущей секунде

например, секундомер на 1.234 секунд вернется 234 в этом отеле. См.промежутка времени.ElapsedMilliseconds

ElapsedTicks (long) возвращает тики с момента запуска секундомера.

в контексте исходного вопроса, относящегося к классу секундомера, ElapsedTicks - это количество прошедших тиков. Тики происходят со скоростью секундомера.Частота, поэтому, чтобы вычислить секунды, вычислите: numSeconds = секундомер.ElapsedTicks / Секундомер.Частота.

старый ответ определяется как число 100 наносекундных периодов, что является правильным в контексте класса DateTime, но не правильным в контексте класса Stopwatch. См.секундомер.ElapsedTicks на MSDN.

ElapsedMilliseconds возвращает округленное число до ближайшей полной миллисекунды, поэтому может не хватать точности.TotalMilliseconds свойство может дать.

прошедшее.TotalMilliseconds-это double, который может возвращать время выполнения частичная миллисекунда в то время как ElapsedMilliseconds Int64. например, секундомер в 0.0007 миллисекунд вернет 0, или 1234.56 миллисекунд вернет 1234 в этом свойстве. Поэтому для точности всегда используют прошедшее.TotalMilliseconds.

посмотреть секундомер.ElapsedMilliseconds on MSDN для разъяснения.

С уважением,


отражение класса секундомера показывает, что ElapsedMilliseconds истекшие тики преобразуются (и округляются) в миллисекунды:

public TimeSpan Elapsed
{
  get
  {
    return new TimeSpan(this.GetElapsedDateTimeTicks());
  }
}

public long ElapsedMilliseconds
{
  get
  {
    return this.GetElapsedDateTimeTicks() / 10000L;
  }
}

в кратком объяснении от в MSDN:

ElapsedMilliseconds

Это свойство представляет прошедшее время, округленное до ближайшего целого значения миллисекунды. Для более точных измерений используйте свойства Elapsed или ElapsedTicks.

ElapsedTicks

Это свойство представляет количество прошедших ТИКов в базовом механизме таймера. Тик-это наименьшая единица времени, которую может измерить таймер секундомера. Используйте поле частота для преобразования ElapsedTicks значение в несколько секунд.

Elapsed

используйте свойство Elapsed для получения значения прошедшего времени с помощью методов и свойств TimeSpan. Например, можно отформатировать возвращаемый экземпляр TimeSpan в текстовое представление или передать его другому классу, для которого требуется параметр TimeSpan.


Elapsed is TimeSpan. Если вы хотите отобразить время, то просто Elapsed.ToString() что делать