Funktion nur an einem bestimmten Tag im Monat ausführen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Funktion nur an einem bestimmten Tag im Monat ausführen

    Hallo,

    ich habe folgendes Problem:
    Wie kann ich eine Funktion in meinem Updatetool (dass ständig im Hintergrund auf einem Server läuft), beispielsweise immer am 15. jedes Monats um 18 Uhr ausführen lassen? Es soll ein automatisches Update geben, ohne "OK" von einem Benutzer.

    Eignet sich dafür ein Timer mit großem Intervall, der mit Hilfe von If-Then, ständig abfragt welcher Tag aktuell ist?
    Und wenn der Tag "15" beträgt und die Stunde "18", die Funktion ausführt und danach abspeichert, dass die Aufgabe für diesen Monat erledigt ist?

    Wie würdet ihr das machen?

    Danke!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „whatever“ ()

    Ich täte einfach bei Programmstart testen ob ein Update vorhanden ist, dem User eine Meldung anzeigen(wennUpdate verfügbar) darin ChangeLogs und fragen ob jetzt geupdatet werden soll. Sollte eine kritische/gefährliche Schwachstelle behoben worden sein, täte ich einfach Updaten nachdem der User informiert wurde. Angenommen du hast eine schwerwiegende Sicherheitslücke drin, sollen deine User dann bis zum nächsten 15. warten oder ständig von Hand auf Updates prüfen?
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Danke Nolde,

    die Funktion soll allerdings automatisch ausgeführt werden, da das Programm auf einem Server läuft und nicht auf ein "OK" warten soll...

    VG

    Könnte es nicht einfach so gehen:

    VB.NET-Quellcode

    1. Timer1.Interval = 3600000
    2. Timer1.Start()
    3. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    4. If Date.Today.Day = 15 And TimeOfDay.Hour = 15 Then
    5. MsgBox("ja")
    6. End If
    7. End Sub

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „whatever“ ()

    whatever schrieb:

    da das Programm auf einem Server läuft und nicht auf ein "OK" warten soll...
    Poste zunächst eine vollständige und belastbare Aufgabenstellung!
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    DAFUQ (Directly Appended FUll Quote).
    Vollzitate sind unerwünscht, vor allem, wenn sie den direkten Vorpost wiedergeben. Zukünftig weglassen oder falls nötig, einzelne Teile direkt zitieren.

    Wenn, dann TimeOfDay.Hour = 18, richtig?
    Das Ganze ginge notfalls. Allerdings ist der Timer nicht sonderlich genau. Da kann sich über einige Tage/Monate hinweg ergeben, dass das länger als eine Stunde bis zum nächsten Tick braucht und dann irgendwann mal einen Monat keine Updates geprüft werden, weil vorher 17:59:59 und dann wegen Timerungenauigkeit der nächste Tick 19:00:02. Also notfalls immer mal wieder automatisch nachjustieren. Du könntest es bei dem Konstrukt auch wagen, den Timer auf 24 Stunden zu stellen.

    btw:
    Schau aber auch mal hier vorbei: Der Unterschied zwischen And und AndAlso/Or und OrElse
    Bevor Du weitermachst, bitte die empfohlenen VS-Einstellungen verwenden. Stichwort TimOfDay und MsgBox.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Habe es oben geupdated, Rod:

    Wie kann ich eine Funktion in meinem Updatetool (dass ständig im Hintergrund auf einem Server läuft), beispielsweise immer am 15. jedes Monats um 18 Uhr, ausführen lassen? Es soll ein automatisches Update geben, ohne "OK" von einem Benutzer.

    ___

    Edit: Danke VaporiZed!
    @whatever Deine Prozedur in Post #3 lässt die Möglichkeit offen, dass innerhalb dieser Stunde mehrfach nachgesehen wird (das wäre hier wahrscheinlich egal).
    Du solltest vielleicht noch intern ablegen, dass dieser Monat abgearbeitet ist, falls der Download selbst länger dauert.
    Dann muss das Programm seine eigene Version kennen, um sie mit der Version des downzuloadenden Programms zu vergleichem, das kannst Du aber innerhalb der Prozedur machen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!