2013-04-13 27 views
7

Tôi đang sử dụng Task Scheduler để lên lịch cho tác vụ của mình trong ứng dụng C#. Tôi nghĩ rằng tôi có được sự hiểu biết cơ bản về thư viện này.Cách lên lịch tác vụ tùy chỉnh thông qua C#

Nhưng bây giờ tôi bị mắc kẹt ở một nơi mà tôi muốn tạo ra một hành động tùy chỉnh mà sẽ thực hiện trên trường quay schedule.Like các built-in action tức EmailAction (Mà sẽ gửi mail đúng tiến độ quy định), ShowMessageAction (mà sẽ hiển thị thông báo cảnh báo về lịch trình đã đặt), tôi muốn tạo một hành động sẽ chạy mã C# của tôi và mã đó sẽ lưu một số dữ liệu vào cơ sở dữ liệu của tôi.

Những gì tôi cố gắng nêu ra là: Tôi tạo ra một lớp CustomAction mà thừa hưởng Action, như:

public class NewAction : Microsoft.Win32.TaskScheduler.Action 
{ 
    public override string Id 
    { 
     get 
     { 
      return base.Id; 
     } 
     set 
     { 
      base.Id = value; 
     } 
    } 

    public NewAction() 
    { 
    } 
} 

Và đây là mã task scheduler của tôi:

.. 
    ... 
    // 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 
     TimeTrigger tt = new TimeTrigger(); 

     tt.StartBoundary = DateTime.Today + TimeSpan.FromHours(19) + TimeSpan.FromMinutes(1); 
     tt.EndBoundary = DateTime.Today + TimeSpan.FromHours(19) + TimeSpan.FromMinutes(3); 
     tt.Repetition.Interval = TimeSpan.FromMinutes(1); 

     td.Triggers.Add(tt); 

     // Create an action that will launch Notepad whenever the trigger fires 
     td.Actions.Add(new NewAction()); <========================== 

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

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

Trên dòng (chỉ bằng mũi tên) tôi đang nhận được ngoại lệ:

Giá trị 210

không nằm trong phạm vi lịch biểu nhiệm vụ phạm vi dự kiến ​​

Tôi không chắc mình đang cố gắng đạt được điều gì là có thể hay không, nếu có thể, xin vui lòng hướng dẫn tôi đúng hướng?

+1

Bạn không thể chỉ thực hiện hành động ngẫu nhiên. Chỉ có 4 hành động có sẵn. Để chạy mã tùy chỉnh, hãy thực hiện một quá trình với hành động exec sẽ thực hiện bất kỳ mã nào bạn muốn. – devshorts

Trả lời

1

Theo hiểu biết của tôi về câu hỏi của bạn. Tôi đã thực hiện cùng một điều, nhưng tôi đã sử dụng "Quartz" Scheduler thay vì "Task Scheduler". Nó rất dễ thực hiện. Có thể bạn cũng có thể thử với điều này.

Để tham khảo: http://quartznet.sourceforge.net/tutorial/

Xin vui lòng sửa tôi nếu tôi sai.