C#에서 예약된 작업 만들기

Muhammad Zeeshan 2023년10월12일
C#에서 예약된 작업 만들기

다음 문서에서는 프로그래밍 언어 C#을 사용하여 작업 예약에 대해 안내합니다.

C# 작업 스케줄러

다음 예에서는 미리 정의된 시간에 또는 트리거된 이벤트에 대한 반응으로 작업을 자동으로 실행하는 구성 요소인 Windows 작업 스케줄러를 활용합니다. 작업은 컴퓨터가 부팅될 때나 사용자가 체크인할 때와 같이 다양한 시간에 실행되도록 예약할 수 있습니다.

작업 스케줄러를 사용하면 미리 정의된 작업의 시작을 트리거하고 특정 시간과 날짜에 명령을 실행하고 스크립트를 실행하는 이벤트를 설정할 수 있습니다.

NuGet 참조 패키지 추가

Windows 작업 예약 작업을 위한 TaskScheduler 패키지를 추가합니다. 그렇게 하려면 아래 단계를 따르십시오.

  • Visual Studio를 열고 Console Application을 만들고 이름을 지정합니다.
  • Solution Explorer 패널을 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택합니다.
  • 이제 찾아보기 옵션을 클릭하고 TaskScheduler를 검색하여 설치합니다.

    너겟 참조 추가

패키지를 추가한 후 다음 라이브러리를 가져옵니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32.TaskScheduler;

로컬 시스템의 태스크 서비스를 시작하기 위해 TaskService를 시작합니다.

using (TaskService ts = new TaskService()) {}

이제 td로 새 작업 정의를 만들고 작성자 또는 설명과 같은 특성을 제공합니다.

TaskDefinition td = ts.NewTask();
td.RegistrationInfo.Author = "Muhammad Zeeshan";
td.RegistrationInfo.Description = "Open Notepad++ for working";

트리거가 트리거되면 Notepad++가 실행되도록 작업을 설정했는지 확인해야 합니다.

td.Actions.Add(new ExecAction(@"C:\Program Files\Notepad++\notepad++.exe"));

그런 다음 기본 폴더에 작업을 등록해야 합니다.

ts.RootFolder.RegisterTaskDefinition(@"My Scheduled Notepad++ Task", td).Run();

마지막으로 아래와 같이 하루의 간격을 삽입할 수 있습니다. 트리거를 설정하여 격일로 이 시간에 작업이 시작되도록 예약합니다.

td.Triggers.Add(new DailyTrigger { DaysInterval = 1 });

완전한 소스 코드:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32.TaskScheduler;

namespace ScheduledTasksbyZeeshan {
  class Program {
    static void Main(string[] args) {
      using (TaskService ts = new TaskService()) {
        TaskDefinition td = ts.NewTask();
        td.RegistrationInfo.Author = "Muhammad Zeeshan";
        td.RegistrationInfo.Description = "Open Notepad++ for working";
        td.Actions.Add(new ExecAction(@"C:\Program Files\Notepad++\notepad++.exe"));
        ts.RootFolder.RegisterTaskDefinition(@"My Scheduled Notepad++ Task", td).Run();
      }
    }
  }
}

출력:

메모장 출력

작업 관리자

Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

관련 문장 - Csharp Task