2010-08-05 4 views
3

C#/.NET을 사용하여 일시 중지 시간을 보려고합니다. 시간을 설정할 수는 있지만 일시 중지 할 시간을 설정하고 싶습니다.Windows의 일시 중지

누구든지이 작업을 수행하는 방법을 알고 있습니까?

명령 프롬프트 제안도 도움이됩니다.

저는 Visual Studio 2010을 사용하고 있습니다.

+2

'타이머'를 일시 중지 하시겠습니까? 슈퍼맨 만 시간을 멈출 수 있다고 생각합니까? 아니면 시간을 거꾸로 만들까요? :) –

+2

@DHoerster - 척 노리스는 어떨까요? :) – Giorgi

+0

왜 이걸하려고합니까? –

답변

3

테스트 용? 또는 실생활?

mock DateTime.Now 테스트를 위해 (IClock 인터페이스를 사용하는 것이 더 쉽지만). 사용의 경우 - 이 아닙니다.

아니면 Thread.Sleep입니까?

+0

@ Marc - 동결해야하는 시스템 시간입니다. 다음주가 아닌 이번 주에 보고서가 입력되었는지 확인해야합니다. 다음 주 23시 59 분 59 초에 확인합니다. 시스템이 다음주라고 생각하지 않는지 확인하는 것입니다. 이 프로세스는 자동화 된 테스트에서 보고서를 확인하는 데 1 초 이상 걸립니다. – chrissygormley

+0

이렇게하려면 시스템 시간을 고정 할 필요가 없습니다. 냉동 시스템 시간이 1 초 이상 걸리면 어떻게 될까? 프로세스를 이전에 실행하거나 시간 처리 코드를 개선하십시오. 코드가 실행되는 주 시간이 1 시간 미만이면 이전 주를보아야한다는 것을 알게됩니다. 코드에 추가하십시오. –

+0

@chrissygormley 다른 사람들이 지적했듯이이를 수행하는 가장 좋은 방법은 테스트에 대한 타이밍 동작을 조롱 할 수 있도록 시간에 대한 모든 종속성을 격리하는 것입니다. 이것은 항상 쉬운 일은 아닙니다. 특히 기존 코드베이스가있는 경우에 특히 그렇습니다. 필자는 개인적으로 시간 인식을 필요로하는 클래스에 주입 할 수있는 다양한 타이밍 관련 함수 (DateTime.Now보고, 시간 경과 후 콜백, 경과 시간 측정 등)를 제공하는 ITimerService를 갖고 싶어합니다. –

0

나는 당신이 창문 시간을 멈추는 것에 대해 이야기하고 있다고 생각하는데, 이것은 이것을하기위한 창 기능이 아니라고 생각한다. 실제로 (브레이크 윈도우 이외의) 다른 해결책이있을 수 있습니다.

+0

@ MikeG - 특정 시간에 테스트를 작성 중이며 테스트 실행과 동일하게 유지해야합니다. 그것은 경계 테스트, 나는 당신이 과거에 시간을 바꿀 수 있기 때문에 아무 문제도 윈도우 타이머를 일시 중지해야한다고 생각합니다. – chrissygormley

+2

테스트를 통해 동일한 값을 반환 할 수있는 교체 가능한 가짜 클래스로 시계를 조롱하십시오. –

0

글쎄, 왜 이렇게하고 싶지는 모르겠지만, Windows에서 'PauseTime'기능과 같은 것이 없기 때문에, 현재 서비스를 표시하는 서비스를 가지고 계시지 않겠습니까? 그런 다음 시스템 시간을 계속 시작 시간으로 설정합니다. 시스템 시간을 동일하게 유지하는 효과가 있어야합니다.

+0

@ Kazar - 그게 내가 잠시 한 일이지만, 나는 그걸 막 동결시킬 길을 기다리고 있었다. 고맙습니다. 어쨌든 – chrissygormley

0

일부 디버깅 작업에 소요되는 시간을 확인하려면 클래스가 있습니다. page on MSDN에는 사용법에 대한 몇 가지 예가 있습니다. 찾고있는 정밀도의 유형을 알 수 없으므로 고성능 타이밍 진단을 찾는 경우 사용할 클래스가 아닙니다.

희망이 도움이됩니다.