การสร้างงานที่กำหนดเวลาไว้


148

ฉันกำลังทำงานกับโครงการ C # WPF ฉันต้องอนุญาตให้ผู้ใช้สร้างและเพิ่มงานที่กำหนดเวลาไว้ใน Windows Task Scheduler

ฉันจะทำสิ่งนี้ได้อย่างไรและฉันต้องการอะไรโดยใช้คำสั่งและการอ้างอิงเนื่องจากฉันไม่พบอะไรมากเมื่อค้นหาในอินเทอร์เน็ต


2
ทุกครั้งที่คุณต้องอยู่ที่นี่: msdn.microsoft.com/en-us/library/aa383614(v=vs.85).aspx API ตัวอย่างและคำอธิบายเกี่ยวกับวิธีการบรรลุสิ่งที่คุณต้องการโดยทางโปรแกรม
kroonwijk

คำตอบ:


214

คุณสามารถใช้Task Scheduler Managed Wrapper :

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

หรือคุณสามารถใช้พื้นเมือง API หรือไปQuartz.NET ดูนี้สำหรับรายละเอียด


3
ใช่คุณต้องดาวน์โหลดและอ้างอิง Microsoft.Win32.TaskScheduler.dll ลิงก์อยู่ในคำตอบ
Dmitry

ใช่ฉันคิดว่าฉันได้เพิ่มการอ้างอิง แต่ด้วยเหตุผลบางอย่างมันไม่ได้ ขออภัยด้วยที่ใช้งานได้ดี ขอบคุณสำหรับความช่วยเหลือของคุณ
Boardy

1
@Dmitry คุณจะเริ่มงานได้อย่างไร? คุณต้องการลงทะเบียนกับ windows scheduler หรืออะไร?
Haroon

2
ฉันเห็นการอ้างอิงสำหรับ win32 จะเกิดอะไรขึ้นถ้าฉันเป็นเซิร์ฟเวอร์ 64 บิต
Seichi

2
ตั้งแต่ CodePlex กำลังปิดลงในไม่กี่เดือนโปรดรับทราบของหน้า NuGet สำหรับ Wrapper Task Scheduler การบริหารจัดการที่nuget.org/packages/TaskScheduler
David A. Gray

30

สิ่งนี้ใช้ได้กับฉัน https://www.nuget.org/packages/ASquare.WindowsTaskScheduler/

มันเป็น API ของ Fluent ที่ออกแบบมาอย่างดี

//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();
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.