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