-
C# (Windows 작업스케줄러를 사용하지 않기 위한...) 특정시간마다 이벤트를 실행시키는 방법닷넷/C# 2018. 10. 19. 11:49반응형
Windows 작업 스케줄러를 이용하지 않고 특정 시간에만 이벤트 또는 메소드를 실행하게 할 수 있는 방법이 없을까 검색해보다가 특정 시간을 계산해서 그 시간에만 이벤트를 실행하는 방법을 찾았다.
예제 코드는 매일 새벽 3시에 이벤트를 실행시키는 타이머이다.
2022-04-22 16:45
현재 시간으로 부터 runAt까지의 남은 시간을 구해서 그 뒤에 타이머가 실행되게 하고
그 다음에는 매 24시간마다 한 번씩 실행 되게 하는 코드이다.
이때, "시"만을 기준으로 하다 보니 딱 3시 마다를 원하면 프로그램도 정각에 실행시켜야 하는 단점이 있어서
시 뿐만 아니라 분, 초 또한 현재시간에서 runAt까지 남은 분, 초도 같이 계산 될 수 있게 예제 코드를 수정 한다.using System.Timers; private Timer timer; private int hours = 0; static void Main(string[] args) { int runAt = 3; int minute = 60 - DateTime.Now.Minute; int second = 60 - DateTime.Now.Second; hours = (24 - ( + 1)) + runAt; int interval = ((hours * 60 * 60) + (minute * 60) + second) * 1000; timer = new Timer(); timer.Interval = interval; timer.Elapsed += new ElapsedEventHandler(Tick); timer.Start(); } void Tick(object sender, ElapsedEventArgs e) { if (hours != 24) { hours = 24; timer.Interval = hours * 60 * 60 * 1000; } // 실행할 이벤트 또는 메소드 입력 }
참고: https://code.i-harness.com/ko-kr/q/4b256
반응형'닷넷 > C#' 카테고리의 다른 글
C# URL에 들어가는 한글 UTF-8 Encoding (0) 2018.10.30 C# Json 파싱하기 전, 비주얼스튜디오 프로젝트에 Newtonsoft.Json 설치하기 (0) 2018.10.26 C# [펌] Parallel.For 병렬 For문 (0) 2018.09.27 C# [펌] TCP/IP환경에서 메시지 교환 원리 (0) 2018.08.30 C# [펌] Thread 파라미터 전달 (0) 2018.08.24