2014-11-17 3 views
5

나는 사용자가 프로그램과 상호 작용을 멈 추면 타이머를 멈추어야하는 C# 프로그램을 가지고있다. 필요한 작업을 일시 중지 한 다음 사용자가 다시 활성화되면 다시 시작됩니다. 나는 몇 가지 조사를 수행하고, 같은 명령이 있음을 발견 : 다음C# 타이머를 일시 중지하는 방법?

timer.Pause(); 

그리고하십시오처럼이 있다면

timer.Stop(); 

timer.Start(); 

하지만 내가 궁금 해서요을 사용자가 다시 활성화되고, 중단 된 부분이 다시 나타나고 다시 시작되지 않습니다. 누구든지 도울 수 있다면, 많이 감사하겠습니다! 감사합니다,

미가

+3

어떤 Timer 클래스를 사용하고 있습니까? 왜'Stop()'메소드가 당신의 필요에 맞는 것이 아닌가? 나중에 다시 Start()를 호출 할 수는 없습니까? –

+0

Windows.Forms.Timer는 이전에 WinForms에 대한 몇 가지 질문을 한 것으로 보입니다. –

+0

다른 사람이나 샘플 솔루션에서 언급했듯이 타이머를 중지/일시 중지하는 것은 일시 중지 및 다시 시작하려는 컨텍스트를 알지 못하는 경우 모호합니다. 이전 단계의 결과에 의존하는 복잡한 계산, 데이터베이스 쿼리, 검열 관, 네트워크 등 모니터링 ... – DRapp

답변

10

당신은 .NET에서 Stopwatch 클래스를 사용하여이를 달성. 단순히 멈추고 시작하면 스톱워치 인스턴스를 계속 사용할 수 있습니다. 이 쉽기 때문에 일시 정지가 없다

timer.Reset(); 
timer.Restart(); 
+0

왜이 답변이 다운 voted인지 설명해 주시겠습니까? –

+5

나는 DVD가 아니지만, 실제로 OP가 무엇을하려고하는지에 달려있다. 일정한 간격으로 약간의 코드를 실행하기 위해 타이머가 필요하고 간격의 중간에 일시 중지하려면 Stopwatch로 바꾸면 도움이되지 않습니다. –

+0

나는 어느 쪽도하지 않았다. 그러나 질문은 사용자 활 동의 <-> 비활성에 관한 것이었다. OP에 대한 힌트 : 두 명의 타이머 사용에 부끄러운 점이 없습니다! – TaW

3

:

단지 아래처럼 Reset 또는 Restart 메소드를 호출, 스톱워치를 재설정하려면 using System.Diagnostics;

var timer = new Stopwatch(); 
timer.Start(); 
timer.Stop(); 
Console.WriteLine(timer.Elapsed); 

timer.Start(); //Continues the timer from the previously stopped time 
timer.Stop(); 
Console.WriteLine(timer.Elapsed); 

을 활용해야합니다 동등한 일을 할 수 있습니다. 타이머를 일시 중지하는 대신 중지 할 수 있습니다. 타이머를 다시 시작해야 할 때 남은 시간을 지정하면됩니다. 복잡 할 수도 있고 간단 할 수도 있습니다. 그것은 당신이 할 타이머를 사용하는 것에 달려 있습니다. 당신이하는 일이 당신이 타이머를 사용하고있는 것에 달려 있다는 사실은 아마 일시 정지가 존재하지 않는 이유 일 것입니다.

일정 기간 동안 반복적으로 작업을 수행하거나 특정 시간까지 카운트하기 위해 타이머를 사용 중일 수 있습니다. 반복적으로 무언가 (예 : 매초마다) 작업을 수행하는 경우 요구 사항은 해당 시간의 시작 부분 (초) 또는 해당 기간의 일부에서 다시 시작될 수 있습니다. 일시 중지가 기간보다 길면 어떻게됩니까? 일반적으로 누락 된 이벤트는 무시되지만 요구 사항에 따라 다릅니다.

그래서 저는 여러분이 여러분의 요구 사항을 결정해야한다고 말하려고합니다. 그런 다음 도움이 필요한 경우 필요한 것을 명확히하십시오.

관련 문제