2012-11-16 3 views
6

Haben Sie eine Liste von Aufgaben und deren Zeitpläne. Sagen Task1 - Täglich 12 PM Task2 - Montag, Mittwoch - 9 PM Würde gerne sie nach ihren Zeitplänen feuern.Abhören von Aufgabenplanerereignissen in C#

Ist es möglich, sie mit Taskplaner oder einem anderen Scheduler \ Timer in C# mit eindeutigem Kontext zu registrieren - die Task-ID. Und beim Rückruf (sagen wir ein Ereignis), kann die Taskid aus dem Kontext abgerufen werden und die Taskid kann ich die Aktionen auslösen.

Grundsätzlich müssen Sie zurückrufen, wenn die geplante Zeit mit dem übergebenen Kontext erfüllt wurde. Und mein Code weiß am besten, was während dieser geplanten Zeit getan werden muss.

Antwort

3

Warum versuchen Sie nicht, quartz.net zu verwenden. Dieser Scheduler unterstützt die Task-ID und den Kontext der Planung. Es gibt auch gute Dokumentation und viele Beispiele.

Hier ist das Beispiel der Aufgabe (aka Job), Kontext der Ausführung wird vom Scheduler gesendet.

public class DumbJob : IJob 
{ 
    public DumbJob() { 
    } 

    public void Execute(JobExecutionContext context) 
    { 
     Console.WriteLine("DumbJob is executing."); 
    } 
} 

BTW vergessen Sie nicht, scheduler statisch zu machen - zu vermeiden, Müll gesammelt werden. Ich habe dieses Problem schon früher getroffen.

+0

Danke Johnny für die Antwort. Dot-Net-Bibliotheken bieten hier keine native Unterstützung? – KrishnaSrihari

+0

Es gibt ein paar, wie Timer und Zähler, aber sie sind nicht so flexibel wie Quarz und haben viele Nachteile. Als ich quatz.net das erste Mal getroffen habe, habe ich all mein Projekt überarbeitet, um es zu benutzen. Immer noch mit =) –