Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Versch. Tasks in untersch. Abständen laufen lassen und von aussen starten/stoppen können
seehashtag
myCSharp.de - Member



Dabei seit:
Beiträge: 38

Themenstarter:

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

beantworten | zitieren | melden

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 :)
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15980

beantworten | zitieren | melden

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.
Zitat
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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7548
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
seehashtag
myCSharp.de - Member



Dabei seit:
Beiträge: 38

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers