Name des Programms:
ScheduleLib 0.0.1.0
Beschreibung:
Mit dieser Library kann man (zur Zeit) Code zeitgesteuert oder per Interval ausführen.
Vielleicht ist diese für jemanden nützlich um Updates, Reorg, etc. zeitgesteuert ausführen zu können
Benutzung:
Beispielprojekt angehängt
zusätzlich hier der Code:
Spoiler anzeigen
Screenshot(s):
keiner, da dll
Verwendete Programmiersprache:
Visual Basic .NET (IDE: VB 2008 Prof.)
Systemanforderungen:
.NET Framework 2.0
Lizenz/Weitergabe:
Freeware, Open Source (siehe unten)
einkompelieren erlaubt, nicht zwingend eine Namesnennung erforderlich wäre jedoch nett
Falls jemanden noch was einfällt die Lib zu erweitern bitte einfach schreiben.
Wie oben bereits erwähnt ist es nichts großes aber vielleicht kanns jemand brauchen.
lg
EDIT: Anbei der Code der Lib:
Spoiler anzeigen
ScheduleLib 0.0.1.0
Beschreibung:
Mit dieser Library kann man (zur Zeit) Code zeitgesteuert oder per Interval ausführen.
Vielleicht ist diese für jemanden nützlich um Updates, Reorg, etc. zeitgesteuert ausführen zu können
Benutzung:
Beispielprojekt angehängt
zusätzlich hier der Code:
VB.NET-Quellcode
- Imports ScheduleLib.Scheduler
- Public Class Form1
- Private WithEvents Scheduler As ScheduleLib.Scheduler
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Scheduler = New ScheduleLib.Scheduler(CDate("31.12.2012 23:59:59") ' Mit Datum/Uhrzeit initialisieren
- AddHandler Scheduler.Tick, AddressOf ScheduleTick
- AddHandler Scheduler.Changed, AddressOf ScheduleChanged
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Scheduler = New ScheduleLib.Scheduler(60000) 'Interval alle 60 Sekunden
- AddHandler Scheduler.Tick, AddressOf ScheduleTick
- AddHandler Scheduler.Changed, AddressOf ScheduleChanged
- End Sub
- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
- If Scheduler IsNot Nothing Then
- Scheduler.ChangeDate(CDate(("31.01.2012 23:59:59")) ' Datum/Uhrzeit neu setzen
- End If
- End Sub
- Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
- If Scheduler IsNot Nothing Then
- Scheduler.ChangeDate(120000) ' Interval auf 2 Minuten setzen
- End If
- 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
- End Class
Screenshot(s):
keiner, da dll
Verwendete Programmiersprache:
Visual Basic .NET (IDE: VB 2008 Prof.)
Systemanforderungen:
.NET Framework 2.0
Lizenz/Weitergabe:
Freeware, Open Source (siehe unten)
Falls jemanden noch was einfällt die Lib zu erweitern bitte einfach schreiben.
Wie oben bereits erwähnt ist es nichts großes aber vielleicht kanns jemand brauchen.
lg
EDIT: Anbei der Code der Lib:
C#-Quellcode
- using System;
- using System.ComponentModel;
- using System.Threading;
- namespace ScheduleLib
- {
- /// <summary>
- /// Klasse welches ein Event zu einer gewissen Zeit oder zum festgelegten Interval ausgibt
- /// </summary>
- /// <remarks></remarks>
- public class Scheduler
- {
- // Main-Timer
- private System.Threading.Timer _MainTimer;
- // Callback des Timers
- private TimerCallback _CallBack;
- /// <summary>
- /// Event das benachrichtigt sobald Interval oder Due "tickt"
- /// </summary>
- /// <remarks></remarks>
- public event EventHandler TimeDifferenz;
- /// <summary>
- /// Ändert den nächsten Zeitpunkt
- /// </summary>
- /// <param name="nextDate">Nächstes Datum + Uhrzeit</param>
- /// <remarks></remarks>
- public void ChangeDate(DateTime nextDate)
- {
- var now = DateTime.Now;
- if(!(nextDate < now))
- {
- // Unterschied zw. den Zeiträumen
- var ts = new TimeSpan(nextDate.Ticks - now.Ticks);
- // Millisekunden in Long
- long dueSet = Convert.ToInt64(ts.TotalMilliseconds);
- _MainTimer.Change(dueSet, Timeout.Infinite);
- }
- }
- /// <summary>
- /// Ändert den Interval
- /// </summary>
- /// <param name="interval">Interval in ms</param>
- /// <remarks></remarks>
- public void ChangeDate(long interval)
- {
- _MainTimer.Change(Timeout.Infinite, interval);
- }
- /// <summary>
- /// Tick des Timers. Controls invoken und Event rauspulvern
- /// </summary>
- /// <param name="stateInfo"></param>
- /// <remarks></remarks>
- private void MainTimer_Tick(object stateInfo)
- {
- foreach(Delegate d in TimeDifferenz.GetInvocationList())
- {
- dynamic T = (ISynchronizeInvoke)d.Target;
- if(T != null && T.InvokeRequired)
- T.BeginInvoke(TimeDifferenz, null);
- else
- d.DynamicInvoke(null);
- }
- }
- /// <summary>
- /// Initialisiert den Scheduler anhand des nächstes Zeitpunktes
- /// </summary>
- /// <param name="nextDate">Nächster Zeitpunkt</param>
- /// <remarks></remarks>
- public Scheduler(DateTime nextDate)
- {
- _CallBack += MainTimer_Tick;
- var now = DateTime.Now;
- if(!(nextDate < now))
- {
- // Unterschied zw. den Zeiträumen
- var ts = new TimeSpan(nextDate.Ticks - now.Ticks);
- // Millisekunden in Long
- long dueSet = Convert.ToInt64(ts.TotalMilliseconds);
- _MainTimer = new Timer(_CallBack, 0, dueSet, Timeout.Infinite);
- }
- else
- _MainTimer = new Timer(_CallBack, 0, Convert.ToInt64(Timeout.Infinite), Convert.ToInt64(Timeout.Infinite));
- }
- /// <summary>
- /// Initialisiert den Scheduler anhand eines angegeben Intervals
- /// </summary>
- /// <param name="interval">Interval in ms</param>
- /// <remarks></remarks>
- public Scheduler(long interval)
- {
- _MainTimer = new Timer(_CallBack, 0, Timeout.Infinite, interval);
- }
- }
- }
ScheduleLib 0.0.1.0
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „fichz“ ()