Entwickler-Ecke
WinForms - Timer reset
IbisGER - So 24.12.17 09:05
Titel: Timer reset
Hallo zusammen,
ich arbeite aktuell an einem Programm das durch einen Timer getriggert wird, sprich es wird eine Minutenanzahl angezeigt in der dieser Timer eine Aktion ausführen, leider startet der Timer hier immer wieder bei dem ersten Startwert statt abzulaufen und diesen bei 0 neu anzustoßen.
Habe ich hier in dieser Prozedur einen Logikfehler?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| { int iTime = Convert.ToInt32(numMinuten.Value); int iTimeLeft = (iTime * 60000);
if (iTimeLeft <= 0) { iTimeLeft = iTimeLeft - 1; } Event(); timer1.Start(); } } |
Danke für alle Hinweise.
IbisGER
Delete - So 24.12.17 10:32
- Nachträglich durch die Entwickler-Ecke gelöscht -
Blawen - So 24.12.17 12:52
Ich nehme mal an, dass der Wert der Variablen im Normalfall POSITIV ist.
Insofern wird deren Wert nicht verringert
if (iTimeLeft <= 0)
Wann setzt Du die Variable wieder auf ihren Ausgangswert zurück?
TmpDir - So 24.12.17 15:32
Warum nicht
System.Timers.Timer [
https://msdn.microsoft.com/de-de/library/system.timers.timer(v=vs.110).aspx] benutzen?
Editiert:
Habe überlesen, das diese Routine von einem Timer bereits getriggert wird.
Sofern du nur einmal den Event() triggern willst, dann beim erstellen des Timers die Laufzeit angeben.
C#-Quelltext
1: 2: 3:
| System.Timers.Timer t = new System.Timers.Timer(numValue.Value * 60000); t.Elapsed += Event(); t.Start(); |
Mehr nicht.
Willst du auch noch die verbleibende Zeit anzeigen sollte man das etwas anders machen.
Moderiert von Th69: URL-Titel hinzugefügt.
IbisGER - So 31.12.17 08:38
Hallo zusammen,
sorry das ich jetzt erst Antworte war leider komplett flach gelegen.
Das Programm soll in bestimmten Taktungen die Outlook Emails prüfen und bei einem bestimmten Absender eine Message Box anzeigen damit diese Mail gesehen wird.
Den Timer habe ich via numericupdown erstellt die Minuten mal 60000 rechnen um die gewünschte Taktung zu erhalten.
leider startet er in meiner bereits gepostetn Quelle den Timer immer wieder neu.
Gruß IbisGER
Th69 - So 31.12.17 10:47
Hast du den Code von TmpDir benutzt?
Ansonsten, in welcher Methode befindet sich dein im Eingangsbeitrag geposteter Code? Wenn dies in der Tick (bzw. Elapsed) Ereignismethode stattfindet, dann ist der nochmalige Aufruf von timer1.Start() natürlich falsch.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!