viele Timer gleichzeitig laufen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Hicki.

    viele Timer gleichzeitig laufen

    Hallo,

    wie viele Timer kann man gleichzeitig am laufen haben. Ich habe vor eine Zeitsteuerung zu bauen, wo ca. 40 Timer gleichzeitig am laufen sind. Ich habe mich belesen, dass dot.net da Schwierigkeiten macht.
    Gibt es da Info´s oder andere Möglichkeiten mit vielen Timern?

    Gruß Andreas

    Hicki schrieb:

    aber es
    genügen seeeeeeehr viel weniger.
    Vielleicht 2, falls die Targets unabhängig voneinander agieren sollen, 40 Timer sind klar ein fehldesign.
    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!
    @Hicki Da brauchst Du einen Sekunden- oder Minutentakt und Du gugst nach, in welcher Gruppe sich ein Status seit dem letzten Tick geändert hat und reagierst entsprechend.
    Genau 1 Timer.
    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!
    Hier mal ein Beispiel:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private WithEvents _t As New System.Timers.Timer()
    3. Private _listTimerControls As New List(Of TimerControl)
    4. Public Sub New()
    5. InitializeComponent()
    6. For i As Integer = 0 To 39
    7. Dim tC As New TimerControl(TimeSpan.FromSeconds(i + 10), i)
    8. AddHandler tC.TimeElapsed, Sub(x, y) Me.Invoke(Sub() Me.Text = DirectCast(x, TimerControl).TimerID & " elapsed.")
    9. _listTimerControls.Add(tC)
    10. Next
    11. _t.Start()
    12. End Sub
    13. Private Sub _t_Elapsed(sender As Object, e As Timers.ElapsedEventArgs) Handles _t.Elapsed
    14. For Each tC As TimerControl In _listTimerControls
    15. tC.Update()
    16. Next
    17. End Sub
    18. End Class
    19. Public Class TimerControl
    20. Public Property TotalTime As TimeSpan
    21. Public Property TimerID As Integer
    22. Public Event TimeElapsed As EventHandler
    23. Public Sub New(totalTime As TimeSpan, id As Integer)
    24. Me.TotalTime = totalTime
    25. Me.TimerID = id
    26. End Sub
    27. Public Sub Update()
    28. Me.TotalTime -= TimeSpan.FromSeconds(1)
    29. If Me.TotalTime = TimeSpan.Zero Then
    30. RaiseEvent TimeElapsed(Me, EventArgs.Empty)
    31. End If
    32. 'Hier noch Control evtl. neuzeichnen, updaten.
    33. End Sub
    34. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o