Tạo các tác vụ theo lịch trình


148

Tôi đang làm việc trên một dự án C # WPF. Tôi cần cho phép người dùng tạo và thêm một tác vụ theo lịch trình vào Trình lập lịch tác vụ Windows.

Làm thế nào tôi có thể thực hiện việc này và những gì sử dụng chỉ thị và tài liệu tham khảo tôi cần vì tôi không tìm thấy nhiều khi tìm kiếm trên Internet.


2
Mọi thứ bạn cần đều có ở đây: msdn.microsoft.com/en-us/l Library / aa383614 (v = vs85) .aspx . API, ví dụ và giải thích về cách đạt được những gì bạn cần lập trình.
kroonwijk

Câu trả lời:


214

Bạn có thể sử dụng Trình lập trình quản lý tác vụ lên lịch trình :

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

Ngoài ra, bạn có thể sử dụng API gốc hoặc truy cập Quartz.NET . Xem điều này để biết chi tiết.


3
Có, bạn cần tải xuống và tham khảo Microsoft.Win32.TaskScheduler.dll. Các liên kết là trong câu trả lời.
Dmitry

Vâng, tôi nghĩ tôi đã thêm tài liệu tham khảo nhưng vì một số lý do. Xin lỗi về điều đó làm việc tuyệt vời mặc dù. Cảm ơn sự giúp đỡ của bạn
Boardy

1
@Dmitry làm thế nào để bạn bắt đầu một nhiệm vụ? Bạn có cần phải đăng ký nó với trình lập lịch trình windows hay cái gì đó không?
Haroon

2
Tôi thấy tài liệu tham khảo là dành cho win32, nếu máy chủ của tôi là 64 bit thì sao?
Seichi

2
Vì CodePlex sẽ ngừng hoạt động trong một vài tháng, vui lòng lưu ý trang NuGet cho Trình bao bọc được quản lý theo lịch trình tác vụ, tại nuget.org/packages/TaskScheduler .
David A. Gray

30

Điều này hoạt động với tôi https://www.nuget.org/packages/ASapes.WindowsTaskScheduler/

Nó được thiết kế độc đáo 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();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.