C# でスケジュールされたタスクを作成する

Muhammad Zeeshan 2023年10月12日
C# でスケジュールされたタスクを作成する

次の記事では、プログラミング言語 C# を使用してタスクをスケジュールする方法について説明します。

C# タスク スケジューラ

次の例では、Windows タスク スケジューラ を使用します。これは、定義済みの時間に、またはトリガーされたイベントに反応して自動的にタスクを実行するコンポーネントです。 タスクは、コンピューターの起動時やユーザーのチェックイン時など、さまざまなタイミングで実行するようにスケジュールできます。

タスク スケジューラを使用すると、事前定義されたタスクの起動をトリガーするイベントを設定し、コマンドを実行し、特定の日時にスクリプトを実行できます。

NuGet 参照パッケージを追加

Windows タスク スケジューリング操作用の TaskScheduler パッケージを追加します。 これを行うには、以下の手順に従います。

  • Visual Studio を開き、Console Application を作成して名前を付けます。
  • ソリューション エクスプローラー パネルを右クリックし、NuGet パッケージの管理 を選択します。
  • Browse オプションをクリックし、TaskScheduler を検索してインストールします。

    nuget 参照を追加

パッケージを追加したら、次のライブラリをインポートします。

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();
      }
    }
  }
}

出力:

メモ帳出力

タスクマネージャー

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