2013-07-11 2 views
1

내 코드를 살펴 보자 : 전화 기능 실행 일상에서 지정 시간

Timer myTimer = new Timer { Interval = 1000 }; 
public void button_Click(object sender, EventArgs e) 
{ 
    myTimer.Tick += new EventHandler(OnTick); 
    myTimer.Start(); 
} 
public void OnTick(object sender, EventArgs ea) 
{ 
    myTimer.Stop(); 
    Execute(); 
} 

내가 일상에서 시간을 지정 실행하는 기능 Execute();를 원하는, 예를 : 1h:5min, 1h:25min, 2h10min.... 나는 Timer 사용하지만 난 단지 함수가 모든 Interval 시간을 실행할 수 있습니다. 타이머의 절대 시간을 어떻게 지정합니까?

+0

응용 프로그램이 항상 실행됩니다 가정 할 때, 당신이 그들을 호출 할 AlarmClock' 대리자의 목록을 유지 클래스, 및 시간 '의 일종을 작성할 수 있습니다. 내부적으로 타이머는 주기적으로 발사하여 아직 대표자 중 한 명에게 전화 할 시간인지 확인합니다. –

+1

이것은 내가 작업 예약 된 윈도우를 사용하는 것이 좋습니다 당신 http://stackoverflow.com/questions/3243348/how-to-call-a-method-daily-at-specific-time-in-c –

+2

에 도움이 될 수 있습니다. 그 때 앱이 실행 중인지 확인하려면 어떻게해야합니까? –

답변

0

당신은 Quartz.net 스케줄러를 사용하여 일정을 만들 수 있습니다 : 당신은 타이머 클래스 내장의의 절대 시간을 지정할 수 없습니다 http://quartznet.sourceforge.net/

0

. 수동으로 간격을 계산해야합니다.

  • 현재 사이에 경과
1

당신은 시간을 밀리 초 단위로 계산 할 수있는 창문 예약 된 작업을 사용 Quartz

  • 같은 스케줄러를 사용하여 당신을 위해 적합 할 수

    기타 솔루션 시간과 응용 프로그램이 시작될 때 Timer을 실행해야하는 시간. 타이머의 Interval에 대한 (밀리 초)을 설정합니다.

    예 :

    TimeSpan ts = <datetime when timer should fire> - DateTime.Now; 
    
    myTimer.Tick += new EventHandler(OnTick); 
    myTimer.Interval = ts.TotalMilliseconds; 
    myTimer.Start(); 
    

    타이머가 해고되면 다시 확인은 지정된 시간에 다음날 다시 발사하기 위해 위의 줄을 사용하여 간격을 설정합니다. 물론

    이 응용 프로그램이 정말 당신이 화재로 타이머 원하는 시간에 실행한다고 가정합니다.