C# でスケジュールされたタスクを作成する
 
次の記事では、プログラミング言語 C# を使用してタスクをスケジュールする方法について説明します。
C# タスク スケジューラ
次の例では、Windows タスク スケジューラ を使用します。これは、定義済みの時間に、またはトリガーされたイベントに反応して自動的にタスクを実行するコンポーネントです。 タスクは、コンピューターの起動時やユーザーのチェックイン時など、さまざまなタイミングで実行するようにスケジュールできます。
タスク スケジューラを使用すると、事前定義されたタスクの起動をトリガーするイベントを設定し、コマンドを実行し、特定の日時にスクリプトを実行できます。
NuGet 参照パッケージを追加
Windows タスク スケジューリング操作用の TaskScheduler パッケージを追加します。 これを行うには、以下の手順に従います。
- 
Visual Studioを開き、Console Applicationを作成して名前を付けます。
- 
ソリューション エクスプローラーパネルを右クリックし、NuGet パッケージの管理を選択します。
- 
Browseオプションをクリックし、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();
最後に、以下に示す 1 日の間隔を挿入できます。 トリガーを設定して、1 日おきにこの時刻にジョブを開始するようにスケジュールします。
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();
      }
    }
  }
}
出力:


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