티스토리 뷰

윈도우 작업 스케줄러는 매일 또는 특정 기간, 특정 이벤트를 중심으로 반복적으로 일어나야 하는 작업을 등록/수정/삭제 있는 기능이다.

 

프로그램을 개발하면서 당연히 윈도우 시작 또는 특정 사용자 로그인시에 작업이 이루어지도록 해야 해서 알아보다 보니 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");

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함