티스토리 뷰
윈도우 작업 스케줄러는 매일 또는 특정 기간, 특정 이벤트를 중심으로 반복적으로 일어나야 하는 작업을 등록/수정/삭제 할 수 있는 기능이다.
프로그램을 개발하면서 당연히 윈도우 시작 후 또는 특정 사용자 로그인시에 작업이 이루어지도록 해야 해서 알아보다 보니 C#에서 윈도우 작업 스케줄러 등록을 편하게 할 수 있도록 Wrapper를 제공하고 있었다.
아래 주소에서 Main Library를 다운받아 이용하기만 하면 된다.
http://taskscheduler.codeplex.com/
다운 받아서 압축 풀어보면 각 .NET 버전별로 사용할 수 있는 라이브러리가 나온다.
개발하는 프로젝트의 참조에 추가를 하고, 사용방법은…
TaskService ts = new TaskService(); TaskDefinition td = ts.NewTask(); //정의 생성. td.RegistrationInfo.Description = "TEST"; //설명. td.Principal.UserId = string.Concat(Environment.UserDomainName, "\\", Environment.UserName); //계정 td.Principal.LogonType = TaskLogonType.InteractiveToken; /*DailyTrigger dt = new DailyTrigger(); //날짜별로 실행. dt.StartBoundary = DateTime.Today + TimeSpan.FromSeconds(10); dt.DaysInterval = 2; td.Triggers.Add(dt);*/ //LogonTrigger lt = new LogonTrigger(); //로그인할때 실행 //td.Triggers.Add(lt); BootTrigger bt = new BootTrigger(); //부팅으로 조건 설정. bt.Delay = new TimeSpan(0, 3, 0); //부팅하고 3분 이후 실행. td.Triggers.Add(bt); td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null)); //프로그램, 인자등록. ts.RootFolder.RegisterTaskDefinition("MyScheduler", td); //MyScheduler란 이름으로 등록.
위에서 보는 것처럼 등록되어 있는 것을 확인할 수 있다.
조건을 변경/삭제할 때에는 아래처럼 하면 된다.
Task t = ts.GetTask("MyScheduler"); //작업스케줄러의 MyScheduler 작업 불러오기. if (t == null) return; //수정 t.Definition.Triggers[0].StartBoundary = DateTime.Today + TimeSpan.FromDays(7); //트리거 변경. t.RegisterChanges(); //변경 체크완료. //MyScheduler 작업 삭제. ts.RootFolder.DeleteTask("MyScheduler");
'전공 > C#' 카테고리의 다른 글
Winform 마우스 이벤트를 받지 않는 컨트롤 만들기, Winform IsHitTestVisible (0) | 2015.08.07 |
---|---|
c# 익스플로러 툴바 만들기(1) (0) | 2015.07.10 |
윈폼에서 SHDocVw 참조, 익스플로러 제어 (0) | 2015.07.09 |
Regasm, warning RA0000: No types were registered (0) | 2015.07.09 |
C# SendMessage string 전달 (2) | 2015.07.06 |
댓글