2013-04-13 12 views
7

Sto utilizzando Task Scheduler per pianificare la mia attività nell'applicazione C#. Penso di avere la comprensione di base di questa libreria.Come pianificare l'attività personalizzata tramite C#

Ma ora ho bloccato in un posto in cui voglio creare un'azione personalizzata che eseguirà sul set schedule.Like il built-in action cioè EmailAction (che invierà la posta in programma set), ShowMessageAction (che sarà mostra un messaggio di avviso sul programma impostato), voglio creare un'azione che eseguirà il mio codice C# e quel codice salverà alcuni dati nel mio database.

Quello che ho cercato ancora è: ho creato una classe CustomAction che eredita Azione, come:

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

    public NewAction() 
    { 
    } 
} 

E qui è il mio codice task scheduler:

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

Sulla linea (indicato dalla freccia) ricevo l'eccezione:

valore non rientra l'atteso compito gamma scheduler

Non sono sicuro di quello che sto cercando di realizzare è ancora possibile o no, se è possibile che vi prego di GUID nella direzione corretta?

+1

Non si può semplicemente eseguire azioni casuali. Ci sono solo 4 azioni disponibili. Per eseguire codice personalizzato, esegui un processo con l'azione exec che eseguirà il codice che desideri. – devshorts

risposta

1

Secondo la mia comprensione della tua domanda. Avevo implementato la stessa cosa, ma avevo usato "Quartz" Scheduler invece di "Task Scheduler". È molto facile da implementare. Potrebbe essere che puoi provare anche con questo.

Per riferimento: http://quartznet.sourceforge.net/tutorial/

favore correggetemi se sbaglio.

Problemi correlati