Laden...

Wie wöchentlichen/15min Termin bzw. Event ressourcenschonend realisieren?

Erstellt von da_user vor 7 Jahren Letzter Beitrag vor 7 Jahren 4.505 Views
D
da_user Themenstarter:in
94 Beiträge seit 2008
vor 7 Jahren
Wie wöchentlichen/15min Termin bzw. Event ressourcenschonend realisieren?

Hi,

Kurzfassung:

Ich will in meiner Anwendung ein wöchentliches und ein 15min auftretendes Event haben. Ersteres also z.b. jeden Montag der Woche. Ich kenne bis jetzt leider nur die Timerklasse, welche in meinen Augen wohl eher ungeeignet dazu ist, insbesondere für ersteres.

Langfassung:
Mein zu schreibendes Programm soll ein BackUp-Dienst werden, der mich einmal die Woche daran erinnert, eine externe HDD einzustecken und auf diese dann selbsständig das BackUp durchführt. Wenn die Meldung weggeklickt wird, soll diese nach einer gewissen Zeit wieder auftauchen (Dazu dürfte aber wohl die Timerklasse auch reichen).
Ach ja: ein "Rechner war am Erinnerungstag nicht eingeschaltet" werde ich wohl durch eine einfache Kontrolle, wann das letzte BackUp durchgeführt wurde, abfangen können.

Viele Grüße
da_user

2.223 Beiträge seit 2005
vor 7 Jahren

Hallo da_user,

schau doch mal hier, das könnte man dafü doch gut gebrauchen

https://github.com/kevincolyar/CronNET

Viele Grüße
Lars

16.806 Beiträge seit 2008
vor 7 Jahren

Von was für einer Applikationen reden wir? App? Desktop? Web?
Ein Dienst im Sinne eines Windows Dienst; das klingelt ziemlich nach Schedule Tasks oder Quartz.NET

Schedule Task kriegste natürlich alles geschenkt...und ist relativ üblich.

D
da_user Themenstarter:in
94 Beiträge seit 2008
vor 7 Jahren

@Lars Schmitt:
Danke schonmal!

@Abt:

Ähm, ist ne gute Frage. Keine App, kein Web. Und eigentlich kein klassisches Desktopprogramm. Das Programm soll in diesem "Infobereich" verschwinden, und sich gefälligst nur zeigen, wenn es was zu melden hat 😉

16.806 Beiträge seit 2008
vor 7 Jahren

Dann ist es trotzdem ein Service oder eine Desktapp ohne Fenster - technisch gesehen.
Daher würde ich sagen Schedule Tasks. Das einfachste und sicherste, da Systemfunktion.

D
da_user Themenstarter:in
94 Beiträge seit 2008
vor 7 Jahren

Dann lese ich mich mal da ein.

Danke!

D
da_user Themenstarter:in
94 Beiträge seit 2008
vor 7 Jahren

Hi,

ein bisschen konnte ich mich jetzt in die Scheduled Tasks einlesen. Das wäre prinzipiell natürlich eine schönere Methode, da Windows ja hier schon alles mitliefert.

Was wir an den Beispielen bis jetzt auffällt: die starten immer ein Programm. Ich würde aber gerne ein Event innerhalb meines Programmes werfen. Bevor ich mich da jetzt noch weiter mit dn Scheduled Tasks auseinandersetze: ist mit diesen überhaupt das Event werfen möglich? Oder sollte ich mich lieber doch mit Cron.NET auseinandersetzen?

16.806 Beiträge seit 2008
vor 7 Jahren

Natürlich kannst Du keinen Event werfen. Aber was machst Du, wenn Deine Anwendung nicht läuft oder abstürzt?
Wer sorgt dafür, dass diese startet? Dein Backup läuft nicht durch. Super. (und da hilft auch Cron.NET nicht).

Üblich wäre an dieser Stelle, dass der Schedule Task Deine Anwendung mit einem Parameter aufruft.
Beim Start Deiner Anwendung nimmst Du den Parameter entgegen und verarbeitest ihn.

Damit Du verhindern kannst, dass erstellst Du einen Mutex und prüfst, ob Deine Anwendung schon läuft.
Wenn ja, dann gibst Du den Parameter an die bereits gestartete Instanz und führst das Backup durch.
Fertig.

5.299 Beiträge seit 2008
vor 7 Jahren

hast du vlt. einen Link für sowas?
ich kenne es von VB.net, da gibts ein Applicatiion.StartupNextInstance - Event, mit dem Mehrfach-Starts "gejoint" werden können.
Für c# finde ich jetzt nichts dergleichen, nur recht komplizierte Diskussionen auf Stackoverflow 8o

Ansonsten fände ich es für ein Backup-Programm evtl garnet schlecht, wenns ganz normal arbeitet - ohne Mutex, und halt vom Scheduler gestartet wird.

Das wäre dann ein kleines, vom MainProg ganz unabhängiges Hilfsproggi, und evtl. den Main-Prog-Code sogar noch entlasten, wenn diese Funktionalität da ganz ausgelagert ist.

Der frühe Apfel fängt den Wurm.

F
10.010 Beiträge seit 2004
vor 7 Jahren

@ErfinderDesRades:
StartupNextInstance ist kein exclusives Event von VB.NET das nicht auch in C# benutzt werden könnte.
mehrere Programminstanzen verhindern?