Event, welches einmal in der Woche ausgelöst wird
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von fichz.
-
-
Wenn du es relativ sicher haben willst musst du die Zeit aus dem Internet abfragen. Timer etc fallen sicherlich auch aus, da der PC wahrscheinlich nicht 24/7/365 läuft.
Du musst die Zeit ja nicht jede 10ms wissen, jede 5 Minuten oder vllt jede stunde abzufragen (mittels timer und bei programmstart => windows gestartet) sollte reichen. -
/nicht getestet
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „rotherford“ ()
-
@rotherford
Ich bekomm die Meldung : Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
VB.NET-Quellcode
- Private Sub ScheduleTick() 'Handles Scheduler.Tick
- MessageBox.Show("Erreicht")
- End Sub
- Private Sub ScheduleChanged() 'Handles Scheduler.Changed
- MessageBox.Show("Zeit geändert")
- End Sub
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- AddHandler Scheduler.Tick, AddressOf ScheduleTick
- AddHandler Scheduler.Changed, AddressOf ScheduleChanged
- If My.Settings.Zeit = False Then
- Dim t = TimeSpan.FromMinutes(1)
- Schedule.ChangeDate(Now + t)
- My.Settings.Zeit = True
- Else
- End If
Bei : AddHandler Scheduler.Tick, AddressOf ScheduleTick -
-
VB.NET-Quellcode
- If My.Settings.Zeit = False Then
- Dim t = TimeSpan.FromMinutes(1)Scheduler = New ScheduleLib.Scheduler(Now + t)
- My.Settings.Zeit = True
- AddHandler Scheduler.Tick, AddressOf ScheduleTickAddHandler Scheduler.Changed, AddressOf ScheduleChanged
- Label2.Text = My.Settings.Zeit.ToStringElse
- Label2.Text = My.Settings.Zeit.ToString
- End If
Wenn ich jetzt starte und beende (eine minute warte) passiert nichts also die msgbox wird nicht angezeigt
-
-
Bitte VB-Tag benutzen - aber richtig
Gut wäre auch, den Methoden-Kopf zu sehen - so wie du postest, kann das ja sonstwo hingeschrieben sein ,9 -
Ok
VB.NET-Quellcode
- Imports DevExpress.XtraEditors.Controls
- Imports MySql.Data.MySqlClient
- Imports System.Text
- Imports ScheduleLib.Scheduler
- Public Class Form1
- Private WithEvents Scheduler As ScheduleLib.Scheduler
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- If My.Settings.Zeit = False Then
- Dim t = TimeSpan.FromMinutes(1)
- Scheduler = New ScheduleLib.Scheduler(Now + t)
- My.Settings.Zeit = True
- AddHandler Scheduler.Tick, AddressOf ScheduleTick
- AddHandler Scheduler.Changed, AddressOf ScheduleChanged
- Label2.Text = My.Settings.Zeit.ToString
- Else
- Label2.Text = My.Settings.Zeit.ToString
- End If
- Dim conn As MySqlConnection
- conn = New MySqlConnection
- conn.ConnectionString = "server=geheim;" & "user id=geheim;" & "password=geheim;" & "database=geheim"
- Try
- conn.Open() ' Verbindung öffnen
- PictureBox1.BackgroundImage = My.Resources.online
- Catch myerror As MySqlException
- PictureBox1.BackgroundImage = My.Resources.offline
- End Try
- '@Tick
- End Sub
- Private Sub ScheduleTick() 'Handles Scheduler.Tick
- ' Tick Event wenn Datum/Zeit oder Interval erreicht
- MessageBox.Show("Erreicht")
- End Sub
- Private Sub ScheduleChanged() 'Handles Scheduler.Changed
- ' Change Event wenn das Datum/Zeit oder Interval verändert wurde
- MessageBox.Show("Zeit geändert")
- End Sub
-
so vom anggugge findich, müsste eiglich funzen (d.h.: absolut keine Gewähr).
Also durchaus möglich, dass die Scheduler-Lib Ranz ist.
(Ich für mein Fall würde auch den Teufel tun, und eine 3rd-party-Dll einbinden, nur wennich was haben will, was gelegentlich mal auf die Uhr gucken tut.) -
-
Was nützt es, ein Programm zu schreiben / zu nutzen, was aus nem NWET die Zeit holt, wenn dann einer den Netzwerkstecker zieht oder die Fritzbox ausschaltet?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! -
-
kann mir nicht vorstellen, das es überhaupt einen einfachen weg für eine sichere Lösung gibt.
Weg 1: Ein Timer, der die Zeit hochzählt. Sehr schlecht, was wenn der PC nicht am dauerlaufen ist? Für mich keine Option
Weg 2: Ein Timer, der gelegentlich auf die Windows-Uhrzeit schaut
-> lässt sich manipulieren
Weg 3: Die Uhrzeit aus dem Internet bestimmen
-> relativ sicher
-> Problem wenn kein Internetz da
Mir fällt für "Weg 4" nur eine Lösung ein die mit gewissen Kosten verbunden ist - aber so eine eigene Atomuhr ist bestimmt auch geil^^
Alternativ könntest du 2 und 3 vermischen, nur bei Programmstart wird die Windowsuhr programmintern mit der Internetzeit gesynct. Zur Programmlaufzeit sollte es möglich sein Manipultionsversuche aufzudecken und einfach herauszurechnen. Es wird allerdings zum Starten des Programms Internet benötigt - nicht optimal. Kann mir aber nicht vorstellen, dass du da ein Hyper-Super-Dupa-Geheimprogramm schreibst, dass eine manipulationssichere Uhrzeit braucht. Wenn doch, wäre es ein Kompromiss zu sagen, dass das Event (erklär mal! xD) ohne Internetzeit-Bestätigung nicht gestartet wird? -
-
goraxer schrieb:
Wo gibts sowas zu kaufen?
Kannst ja mal in Braunschweig nachfragen, ob Du die alte für Lau bekommen kannst.
----
Hast Du Angst, dass jemand Dein Programm zum Stolpern bringt?
Das sollte Dir doch völlig egal sein, denn auf Deinem Rechner wird das ja nicht passieren.
Nimm die Uhr vom Rechner und fertig oder ruf den telefonischen Weckdienst an.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! -
Die Lib funktioniert.
Ich habe auch den Code von oben probiert (ausser dem My.Settings und Sql Dingens) und bei mir kommt eine Messagebox mit "Erreicht".
Die Lib macht nichts anderes als intern einen Threading.Timer zu initialisieren welcher einmal tickt wenn die Anzahl der Millisekunden bis zum gewünschten Zeitraum verstrichen ist.
Wenn das nicht funktioniert liegt es vermutlich an etwas anderem.
Welches OS hast du?
lgScheduleLib 0.0.1.0
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten -
fichz schrieb:
Welches OS hast du?
Windows 7 und noch eine Frage. Läuft der Timer auch wenn das Programm nich läuft? -
Wenn du was mit Hardware willst:
Arduino + RTC (Real Time Clock)
Dann hast due eine Uhr die immer läuft und abgerufen werden kann, und auch net manipulierbar ist, aussert jemand proggt den Arduino um, das kann man aber mit einem Befehl sperren
mfg Ebrithil -
goraxer schrieb:
Läuft der Timer auch wenn das Programm nich läuft?
Nein kann er auch nicht.
Das Programm muss laufen damit das Event feuern kann.
lgScheduleLib 0.0.1.0
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
-
Ähnliche Themen
-
6 Benutzer haben hier geschrieben
- Gast (12)
- RodFromGermany (2)
- fichz (2)
- ErfinderDesRades (2)
- rotherford (1)
- ebrithil (1)