이 코드는 당신이 생각했던 방식으로 작동하지 않습니다
DateTime _starttime = DateTime.UtcNow;
Stopwatch _stopwatch = Stopwatch.StartNew();
는 기껏해야, 당신의 정확도는 10 ~ 15 밀리됩니다.
이유는 UtcNow가 스레드 퀀텀 당 한 번만 업데이트된다는 것입니다. 멀티 코어 컴퓨터의 Windows에서 스레드 퀀텀은 15ms입니다. 단일 코어 머신은 매 10ms마다.
스톱워치는 매우 정확하고 매우 정밀하므로 더 잘 수행 할 수 있습니다. 나는 예제를 통해 설명 할 것이다.
어쨌든 1 미터 정밀도와 정확도를 얻을 수있는 실제 스톱워치가있는 경우 시간과 분만 표시하는 알람 시계를 사용해도 좋을까요?
하실 수 있습니다. 스톱워치를 사용하여 시간의 경과를 매우 정확하게 측정 할 수 있습니다. 오전 11시 14 분부터 오전 11시 15 분까지는 알람 시계를 시청할 수 있습니다.예를 들어
, 당신은 다음과 같은 이벤트 세트 관찰 할 경우 :
- 읽기 스톱워치 : 12000 MS
- 읽기 클럭 : 오전 11시 14분
- 읽기 시계 : 오전 11시 15분
- 스톱 워치 읽기 : 12002 ms
중간에 어딘가에 있다는 것을 알면 시간은 정확히 11 : 15 : 00.0000입니다. 당신의 스톱워치가 그렇게 말했기 때문에 단지 2 밀리 세컨드의 시간 범위 내에서.
그래서 지금 당신은 알고 스톱워치 값 12001 +/- 1 밀리 == 11 : 15 : 00.000000
당신은 DateTime.UtcNow()와 스톱워치이 같은 개념을 적용 할 수 있습니다.
초시계를 읽고 utcnow를 반복적으로 읽었을 때 UtcNow 눈금이 11 : 14 : 31.030에서 11 : 14 : 31.045로 넘어 간다면 그 곳의 시간은 정확히 31.04500000임을 알 수 있습니다. 스톱워치는 실제 시간이 실제로 얼마나 경과했는지 알려주므로 오류가 얼마나 많은지 알 수 있습니다.
이것은 "google it go"코멘트가 아니지만 정보가 너무 많아서 대답을 빨리 찾을 수없는 경우가 많습니다. 예를 들어 ".net show milliseconds"를 검색하면 맨 처음 결과는 답변과 동일한 것을 말하는 "방법 : 날짜 및 시간 값에 밀리 초 표시"라는 제목의 페이지입니다. 문서로 이동하는 것의 한 가지 이점은 찾고있는 답을 얻지 만 사용할 수있는 다른 것들을 발견 한 다음 필요할 때 나중에 기억한다는 것입니다. –
예, 바보 같은 느낌이 듭니다. 솔루션은 스톱워치 "_stopwatch.Elapsed.TotalMilliseconds.ToString()"(시도했지만 작동하지 않았다 ..)와 같았고 Google에 코드를 적용 할 수있는 방법을 찾는 것이 어렵다고 생각했습니다. 어쨌든 당신을 감사하십시오 !! – jsls