Mehrere Timer in einem Dienst

Hi,

ich benötige einen Dienst, der mehrere Aufgabene ausführt - alle Timer gesteuert.
Der Form.Timer läßt sich zwar im Dienst einbinden, lößt jedoch kein Ereignis aus.
Mit dem System.Timers geht es - nur fehlt da dann halt das Tag Property, über welches ich die einzelnen Aufgaben identifiziere wenn die Funktion aufgerufen wird.

Funktioniert nicht:
ServiceTimer = New System.Windows.Forms.Timer()
ServiceTimer.Interval = 10000
ServiceTimer.Enabled = True
ServiceTimer.Tag = 1
EventLog.WriteEntry("Service " & _
„wurde gestartet.“, EventLogEntryType.Information)
AddHandler ServiceTimer.Tick, AddressOf OnTimerEvent

Funktioniert:
ServiceTimer = New System.Timers.Timer()
ServiceTimer.Interval = 10000
ServiceTimer.Enabled = True
EventLog.WriteEntry("ZipService " & _
„wurde gestartet.“, EventLogEntryType.Information)
AddHandler ServiceTimer.Elapsed, AddressOf OnTimerEvent

Hat jemand eine Idee, wie man mehrere System Timer einbinden kann bzw wie die Funktion nachher erkennen kann, welcher Timer nun aktiv ist?

Danke,

Andre

Hi!
System.Windows.Forms.Timer funktioniert deswegen in einem Dienst nicht, weil diese Art von Timer intern über Windows-Nachrichten arbeitet, die an ein Fenster geschickt werden. Ein Dienst hat kein Fenster, damit funzt es nicht.
Der System.Timers.Timer kommt ohne Fensterhandle aus, darum geht’s.

Aber irgendwie scheine ich Deine Frage noch nicht richtig verstanden zu haben. Du kannst doch (praktisch) beliebig viele Timer anlegen und jedem einen eigenen Eventhandler für sein Elapsed-Ereignis zuweisen, warum brauchst Du dann ein zusätzliches Property des Timers, um sie zu unterscheiden?

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi!
System.Windows.Forms.Timer funktioniert deswegen in einem
Dienst nicht, weil diese Art von Timer intern über
Windows-Nachrichten arbeitet, die an ein Fenster geschickt
werden. Ein Dienst hat kein Fenster, damit funzt es nicht.
Der System.Timers.Timer kommt ohne Fensterhandle aus, darum
geht’s.

Aber irgendwie scheine ich Deine Frage noch nicht richtig
verstanden zu haben. Du kannst doch (praktisch) beliebig viele
Timer anlegen und jedem einen eigenen Eventhandler für
sein Elapsed-Ereignis zuweisen, warum
brauchst Du dann ein zusätzliches Property des Timers, um sie
zu unterscheiden?

Gruß,
Martin

Hallo,

ok, dass mit dem Forms.Timer habe ich soweit verstanden.
Das Problem mit den Eventhandlern ist, dass ich die Tasks dynamisch generiere, sprich aus einer Config Datei einlese und die Anzahl Variabel ist, ich vergleiche das mal mit den „Geplante Task“ von Windows.
Darum muss die Funktion wissen, welcher Timer sie aufgerufen hat um die entsprechende Anwendung auszuführen.
Bei einer fixen Anzahl könnte man ja den Sender mit dem Objekt vergleichen, aber so muss ich anhand des Timers schon auswerten können, welcher Timer es ist.
Habe den Tip bekommen, es mit einem Dictonary(of Timer, Integer) zu realisieren, sollte ja gehen.

Danke,

Andre