Autor Beitrag
IbisGER
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 24.12.17 09:05 
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?


ausblenden 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
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 24.12.17 10:32 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Blawen
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: 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?

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
TmpDir
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 3

Win7HP Win8.1 Deb/Ubuntu
C# [Delphi 6 Pro, Delphi 2005 PE, TurboDelphi PE]
BeitragVerfasst: So 24.12.17 15:32 
Warum nicht System.Timers.Timer 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.
ausblenden 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 user profile iconTh69: URL-Titel hinzugefügt.

_________________
repeat :autsch: until :think:
IbisGER Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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.