티스토리 뷰
윈도우 작업 스케줄러는 매일 또는 특정 기간, 특정 이벤트를 중심으로 반복적으로 일어나야 하는 작업을 등록/수정/삭제 할 수 있는 기능이다.
프로그램을 개발하면서 당연히 윈도우 시작 후 또는 특정 사용자 로그인시에 작업이 이루어지도록 해야 해서 알아보다 보니 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 |
댓글
