Membuat Tugas Terjadwal

148

Saya sedang mengerjakan proyek C # WPF. Saya perlu mengizinkan pengguna untuk membuat dan menambahkan tugas terjadwal ke Penjadwal Tugas Windows.

Bagaimana saya bisa melakukan ini dan apa yang menggunakan arahan dan referensi yang saya butuhkan karena saya tidak menemukan banyak ketika mencari di internet.

Boardy
sumber
2
Yang Anda butuhkan ada di sini: msdn.microsoft.com/en-us/library/aa383614(v=vs.85).aspx . API, contoh dan penjelasan tentang cara mencapai apa yang Anda butuhkan secara terprogram.
kroonwijk

Jawaban:

214

Anda dapat menggunakan Pembungkus Dikelola Penjadwal Tugas :

using System;
using Microsoft.Win32.TaskScheduler;

class Program
{
   static void Main(string[] args)
   {
      // Get the service on the local machine
      using (TaskService ts = new TaskService())
      {
         // Create a new task definition and assign properties
         TaskDefinition td = ts.NewTask();
         td.RegistrationInfo.Description = "Does something";

         // Create a trigger that will fire the task at this time every other day
         td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });

         // Create an action that will launch Notepad whenever the trigger fires
         td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));

         // Register the task in the root folder
         ts.RootFolder.RegisterTaskDefinition(@"Test", td);

         // Remove the task we just created
         ts.RootFolder.DeleteTask("Test");
      }
   }
}

Atau Anda dapat menggunakan API asli atau menggunakan Quartz.NET . Lihat ini untuk detailnya.

Dmitry
sumber
3
Ya, Anda perlu mengunduh dan merujuk Microsoft.Win32.TaskScheduler.dll. Tautan ada di jawabannya.
Dmitry
Ya maaf saya pikir saya memang menambahkan referensi tetapi untuk beberapa alasan itu tidak. Maaf tentang itu bekerja dengan baik. Terima kasih atas bantuan Anda
Boardy
1
@Lakukan bagaimana Anda memulai tugas? Apakah Anda perlu mendaftarkannya ke windows scheduler atau apalah?
Haroon
2
Saya melihat referensi untuk win32, bagaimana jika saya server saya 64bit?
Seichi
2
Karena CodePlex dimatikan dalam beberapa bulan, harap perhatikan halaman NuGet untuk Penjadwal Dikelola Penjadwal Tugas, di nuget.org/packages/TaskScheduler .
David A. Gray
30

Ini berfungsi untuk saya https://www.nuget.org/packages/ASquare.WindowsTaskScheduler/

Ini dirancang dengan baik API Lancar.

//This will create Daily trigger to run every 10 minutes for a duration of 18 hours
SchedulerResponse response = WindowTaskScheduler
    .Configure()
    .CreateTask("TaskName", "C:\\Test.bat")
    .RunDaily()
    .RunEveryXMinutes(10)
    .RunDurationFor(new TimeSpan(18, 0, 0))
    .SetStartDate(new DateTime(2015, 8, 8))
    .SetStartTime(new TimeSpan(8, 0, 0))
    .Execute();
Uday Reddy
sumber