Timer Überschneidungen verhindern !
- 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 21 Antworten in diesem Thema. Der letzte Beitrag () ist von TVX.
-
-
Wie 'schnell' Ticken die Timer denn und was versuchst du in etwa zu erreichen?
Möglicherweise kannst du alle Timer durch einen Einzigen ersetzen - z.B. einen/mehrere Integers hochzählen und je nach Wert bestimmte Methoden aufrufen.
Vllt kannst du durch eine andere Herangehnsweise auch den ein oder anderen Timer los werden. 6 Timer sind jedenfalls häufig zu viel und lassen sich vermeiden.
lg -
TVX schrieb:
ich habe 6 Timer
Beschreib dies mal
oder
motiviere uns, die Notwendigkeit von 6 Timern zu verstehen.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! -
Nein verkorkstes Design eigentlich nicht durch die 6 Timer werden 6 Listboxen angesteuert.
jede Listbox hat ihren eigenen Timer und jeder dieser Timer ist für den Benutzer variabel einstellbar
Ebenfalls müssen nicht alle 1 bis 6 benutzt werden sie sind alle zu und abschaltbar und das jeder zeit !
ich dachte jetz das ich alle 6 Ereignisse in if Abfragen stecke die kontrollieren welche boxen an sind und jede if Abfrage
beherbergt ein kleines sleep - das ganze dan 1 bis 6 untereinander in eine Funktion gepackt die durch die verschiedenen Timer aufgerufen wird .......oder so -
TVX schrieb:
oder so
Ich gehe mal davon aus, dass alle Timer dasselbe Intervall haben, Du kannst ja die bisherigen Timer-Routinen nacheinander aufrufen, sofern sie (einzeln) enabled sind.
Ich sehe da keine Schwierigkeit.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! -
Ne er sagte ja die Timer sind vom Benutzer Variabel einstellbar. Aber dennoch geht das mit nur einem Timer der ein Interval von 1000ms hat also 1 Sek.
Nun soll die eine Listbox alle 3 Sek eine andere all 20 Aktualisiert werden. Also in dem einem Timer eine Variable hochzählen und wenn sie entsprechenden Sekundenwert erreicht hat wird was ausgeführt
mit Checkboxen erweitert wenn man einzelne Listboxen deaktiviert haben will. -
Warum packt man diese zusammengehörigen Dinge nicht in eine Klasse?
Den Pointer auf die Listbox, das Intervall, denn Counter, das Enabled-Flag usw. sowie eine Sub für den Timer-Tick.
Für jede Gruppe instantiiert man diese Klasse und packt alle Instanzen in eine List.
Im Timer-Event ruft man dann lediglich die Timer-Tick-Methode der gelisteten Instanzen auf.
Je nach Notwendigkeit könnte man statt der Timer-Tick-Methode sogar ein eigenes Event in der Klasse unterbringen.--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
-- -
RodFromGermany schrieb:
Zitat von »TVX«
Ich gehe mal davon aus, dass alle Timer dasselbe Intervall haben
NEI JEDER HAT EINEN INTERVALL -
@TVX: Ist das tatsächlich erforderlich?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! -
-
/sign.
Schreib dir eine MultiTimer-Klasse, die einen Timer kapselt, aber in verschiedenen Intervallen Ticks raushauen kann, die auch noch von verschiedenen Abonenten abonniert werden können.
Spannende Sache das - musste richtig Brain-Power investieren
Ich für mein Teil würde aber gerne deine Definition wissen, von "sich überschneidenden Timern" -
Habs !
Hab jetz einen Timer und 6 Couner , wird das eingestellte Limit erreicht stellt sich der counter wieder auf 0
Haupt Timer läuft im 1 Sec Intervall
habe aber noch nen kleinen Zeitversatz gemacht innerhalb dieser Sec von 5 x 2 ms ,bei mier gehts so aqber für andere könnte das zu schnell sein
PS:es werden davon 6 volle listboxen gesteuert ! -
-
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! -
-
TVX schrieb:
späte BindungObject
deklariert, das solltest Du casten oder ordentlich deklarieren.
Wie sieht denn die Deklaration aus?sender As System.Object
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! -
-
TVX schrieb:
Dim lstFiles As ComboBox
oder so.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! -
Ne - Option Strict On - lässt späte Bindung nicht zu
Dim lstFiles As Object
Spoiler anzeigen VB.NET-Quellcode
- 'listboxen mause event
- Dim iTempIndex As Integer
- Dim iLstIndex As Integer
- Dim lstFiles As Object
- 'Mausevent für ListBox2
- Private Sub FileListBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
- If e.Button = Windows.Forms.MouseButtons.Left Then
- ' zu verschiebendes Item speichern
- iLstIndex = ListBox1.SelectedIndex
- Else
- iLstIndex = -1
- End If
- End Sub
- Private Sub ListBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseMove
- Dim sTempItem As String
- Dim iTempIndex As Integer
- If e.Button = Windows.Forms.MouseButtons.Left And lstFiles.SelectedIndex <> iLstIndex And iLstIndex > -1 Then
- ' aktuellen Index ermitteln
- iTempIndex = ListBox2.SelectedIndex
- ' markiertes Item zwischenspeichern
- sTempItem = CStr(ListBox2.Items(iTempIndex))
- ' zuvor geklicktes Item mit aktuellem ersetzten
- ListBox2.Items(iTempIndex) = ListBox2.Items(iLstIndex)
- ' zwischengespeichertes Item an vorige Position
- ListBox2.Items(iLstIndex) = sTempItem
- ' neuen ListIndex setzten
- iLstIndex = iTempIndex
- End If
- End Sub
-
-
Ähnliche Themen
-
Deathman - - Sonstige Problemstellungen
-
4 Benutzer haben hier geschrieben
- Gast (13)
- RodFromGermany (7)
- petaod (1)
- ErfinderDesRades (1)