C# (Windows 작업스케줄러를 사용하지 않기 위한...) 특정시간마다 이벤트를 실행시키는 방법

2018. 10. 19. 11:49프로그래밍/C#

Windows 작업 스케줄러를 이용하지 않고 특정 시간에만 이벤트 또는 메소드를 실행하게 할 수 있는 방법이 없을까

검색해보다가 특정 시간을 계산해서 그 시간에만 이벤트를 실행하는 방법을 찾았다.


예제 코드는

매일 새벽 3시에 이벤트를 실행시키는 타이머이다.


using System.Timers;
 
----------------------------
 
private Timer _timer;
private Int32 _hours = 0;
private Int32 _runAt = 3;
 
protected override void OnStart(string[] args)
{
    _hours = (24 - (DateTime.Now.Hour + 1)) + _runAt;
    _timer = new Timer();
    _timer.Interval = _hours * 60 * 60 * 1000;
    _timer.Elapsed += new ElapsedEventHandler(Tick);
    _timer.Start();
}
 
void Tick(object sender, ElapsedEventArgs e)
{
    if (_hours != 24)
    {
        _hours = 24;
        _timer.Interval = _hours * 60 * 60 * 1000;
    }
 
    // 실행할 이벤트 또는 메소드 입력
}
cs



출처: https://code.i-harness.com/ko-kr/q/4b256


  • 프로필사진
    전산2019.09.02 10:43

    질문좀 드려도될까요? 제발 부탁드립니다...

  • 프로필사진
    전산2019.09.02 10:50

    이거 때문에 5일동안 고민하고있습니다 ㅠㅠ...

  • 프로필사진
    전산2019.09.02 11:25

    예제 코드대로 작성했고 RunAt만 11시로 바꿨습니다.(오전11시에 실행하기위해)
    그시간에 컴퓨터가 꺼지는 코드를 작성해서 윈도우서비스에 올렸는데 11시가 되어도 작동이 되질않내요. 뭐가 잘못된건지 모르겠습니다.ㅠㅠ

    • 프로필사진
      자유곰2019.11.05 12:04 신고

      안녕하세요 죄송하게도 이제서야 봤네요.
      해결하셨는지요? 늦었지만, 아직 해결을 못하셨으면 답변드리도록 하겠습니다.