2016-06-15 6 views
0

코드 실행 기간을 계산해야하는 코드 블록이 있습니다. 블록이 DispatcherTimer를 통해 매 초마다 호출되는 방법.C에서 TimeSpan totalseconds의 문제 #

사진에서 볼 수 있듯이 span4.totalseconds는 약 0이지만 (DateTimeOffset.Now - now2) 지속 시간은 약 1 초입니다.

What's going on?

//some code here 
span4 = DateTimeOffset.Now - now2; 
someInfo.Text = (DateTimeOffset.Now - now2).TotalSeconds.ToString(); 
now2 = DateTimeOffset.Now; 
+2

내가 스톱워치 클래스를 사용하는 것이 코드 실행 시간을 측정하려면,하지만 아마도 내가 당신의 문제 – Steve

+1

를 오해 'DateTimeOffset.Now'는 실제로 Now-Now를 의미합니다. 평가의 순간, 즉 시계를 추가 할 때 시간이 있습니다. 두 번째 이제 디버깅하는 동안 첫 번째 1 초 후 쉽게 호출 할 수 –

+0

@ 스티브 나는 정확히 실행 시간을 필요로하지 않고 오히려 Timer.Tick을 통해 메서드의 서로 다른 호출 사이의 시간. –

답변

2

DateTimeOffset.Now 당신이 두 번 같은 뺄셈을하고 왜 ...를 호출 할 때마다 가지 다른 값을 가지고 있기 때문에? 이 시도 :

span4 = DateTimeOffset.Now - now2; 
someInfo.Text = (span4).TotalSeconds.ToString(); 
now2 = DateTimeOffset.Now; 
+0

문제는 span4.totalseconds가 0이지만, (DateTimeOffset.Now - now2) .TotalSeconds를 보면 약 1 초입니다. 올바른 값은 1 초입니까? 그래도. –

+0

올바른 값은 호출하는 순간에 따라 달라지며 그 값은 매초마다 변경됩니다. – lem2802

+0

DispatcherTimer를 통해 매초 호출합니다. –

2

방법을 당신은 스톱워치 클래스 사용 닷넷에서의 실행 시간을 측정 :

Stopwatch stopWatch = new Stopwatch(); 
stopWatch.Start(); 
Thread.Sleep(10000); 
stopWatch.Stop(); 

// Get the elapsed time as a TimeSpan value. 
TimeSpan ts = stopWatch.Elapsed; 
+1

사실, OP 문제는 설명하지 않습니다. 같은 문제 (1 초 차이)가 'Stopwatch'에서도 발생할 것이라 확신합니다. –