Laden...

Versch. Tasks in untersch. Abständen laufen lassen und von aussen starten/stoppen können

Erstellt von seehashtag vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.888 Views
S
seehashtag Themenstarter:in
35 Beiträge seit 2016
vor 7 Jahren
Versch. Tasks in untersch. Abständen laufen lassen und von aussen starten/stoppen können

Hallo.

ich möchte verschiedene Tasks in unterschiedlichen Abständen ausführen lassen. Ich möchte diese aber auch von außen stoppen bzw. löschen können. Es macht also an sich Sinn eine Klasse dafür zu erstellen.

Ich hab dazu mal dieses Tutorial befolgt: http://www.infoworld.com/article/3063560/application-development/building-your-own-task-scheduler-in-c.html
Da wird einem der Code der Klasse ja direkt aufm Teller serviert. Die hab ich bei mir im Projekt nun auch eingerichtet, aber was soll man damit anfangen, das kann doch noch nicht fertig sein.
Man kann Tasks hinzufügen und die werden alle in einem neuen Thread durchgearbeitet. Aber wo kann ich den Intervall einstellen, laufen die Tasks überhaupt wiederholt? Ich weiß auch nicht, ich hab das Gefühl das ist nicht das, wonach ich suche.

Ich würds am liebsten selbst machen.

var timer = new System.Threading.Timer((e) =>
{
    Console.WriteLine("################ Job executed #############");
}, null, 0, 5000);

Das hier funktioniert schon mal gut und das würde ich gerne auf eine Klasse ausweiten. Dort könnt ich eine Collection an solchen Timern halten und beendet würde ich die wahrscheinlich, indem ich den timer = null setze oder? Dann denke ich mir aber wieder, wofür gibt es einen TaskScheduler in C#, wenn ich den nicht nutze 😦

Hoffe das war nicht zu wirr und mir kann jmd helfen 😃

16.807 Beiträge seit 2008
vor 7 Jahren

Haste nur den Code des Links angeschaut, ohne die Erklärung durchzulesen? 😉

Ein Task Scheduler hat nichts mit Scheduled Tasks zutun, auch wenn die Namen ähnlich lauten.
Tasks in C# sind eine Abstraktion von Threads.

und beendet würde ich die wahrscheinlich, indem ich den timer = null setze oder?

Beim Blick in die Doku oder die Methodenauflistung wirst Du sehr schnell eine Stop() Methode finden.
Zudem sollte - wie in der Doku steht - der Timer nicht einfach genullt sondern auch disposed werden.

M
402 Beiträge seit 2005
vor 7 Jahren

Hi...

Schau dir mal Quarz.net an http://www.quartz-scheduler.net

Ist ein Task/Job - Scheduler der eigentlich genau das kann was du versuchst selber zu programmieren.

lg

6.911 Beiträge seit 2009
vor 7 Jahren

Hallo seehashtag,

du kannst auch die betriebssystemeigenen Task-Scheduler (Aufgabenplaner) verwenden. Die sind für so etwas auch da. Windows -> Aufgabenplanung, Linux -> Cron

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
seehashtag Themenstarter:in
35 Beiträge seit 2016
vor 7 Jahren

Danke für eure Antworten! Ich arbeite mich gerade in Quartz.NET ein und komme ganz gut damit klar 😃 Ich denke ich bleibe bei dieser Variante.