Я знаю, что это старый вопрос, но я думал, что предоставлю свои 2 цента после борьбы с той же самой проблемой:
Я начал смотреть на Частоту, как предложено @AllonGuralnek, и она действительно предоставила точнуювремя в секундах, но оно отбрасывает оставшиеся миллисекунды, которые я также хотел записать.
В любом случае, после большого количества перемоток назад и бездействия, я заметил, что sw.Elapsed имеет свойство Ticksи этот предоставил мне точное количество тиков, а когда он был преобразован обратно, он дал мне точное время.
Код мудрый, вот что я закончил:
Stopwatch sw = new Stopwatch();
sw.Start();
... DO WORK
sw.Stop();
long elapsedTicks = sw.Elapsed.Ticks;
Debug.WriteLine(TimeSpan.FromTicks(elapsedTicks).ToString());
Когдавыполнение теста, вызов:
sw.Elapsed.ToString()
: «00: 00: 11.6013029»
sw.ElapsedTicks
: возвращает «40692243» ипреобразуется в «00: 00: 04.0692243» при вызове TimeSpan.FromTicks(sw.ElapsedTicks).ToString()
, что является неточным.
sw.Elapsed.Ticks
: возвращает «116013029» и преобразуется в «00: 00: 11.6013029» при вызовеTimeSpan.FromTicks(sw.Elapsed.Ticks).ToString()
который точен.
Хотя я могу что-то упустить, я чувствую, что не имеет смысла, что sw.ElaspedTicks возвращает другое значение, чем sw.Elapsed.Ticks, поэтому, если кто-то хочет пролить свет на это, пожалуйста, но с моей точки зрениязрения, я вижу это как ошибку, и если нет, то, по крайней мере, она кажется очень непоследовательной!.
ПРИМЕЧАНИЕ : вызов sw.ElapsedTicks / Stopwatch.Frequency
возвращает 11 (т. е. секунд), но, как я сказал,он отбрасывает миллисекунды, которые мне не нужны.