C# Anfänger Hlfe bei Kombination von Tmer und Schleife
-
Hallo,
Ich möchte über einen Butten einen Timer starten der eine Animation steuert,
leider habe ich ein Problem mit der schleife denn sobald die Schleife das erste mal durchgelaufen ist springt der Debugger immer wieder auf die Methode timer1_Tick.
Kann mir jemand sagen warum das so ist?private void buttonAnimation_Click(object sender, EventArgs e) { timer1.Enabled = true; } private void timer1_Tick(object sender, EventArgs e) { Pen stift = new Pen(Linienfarbe); Rectangle bereich = panel1.ClientRectangle; if (aufrufe < 22) { zeichenflaeche.Clear(Color.White); //jeweils 10 von der Höhe und Breite abziehen //bereich ist ein Feld bereich.Width = bereich.Width - 10; bereich.Height = bereich.Height - 10; //den Startpunkt setzen bereich.Location = new Point(bereich.Location.X + 5, bereich.Location.Y + 5); //ein Rechteck zeichnen zeichenflaeche.DrawRectangle(stift, bereich); aufrufe++; } }
-
Startet man den Timer nicht mit timer1.Start() ?
Na ja, und was sagt der Debugger?
Ich könnte mir vorstellen, dass es Probleme gibt, weil du von Timer (Thread) auf den Hauptthread zugreifen willst.
-
Du musst auch wieder timer1.Stop() aufrufen. Am besten ganz zu Beginn der timer1_Tick()-Methode, damit der Timer nicht erneut "ticked".
MfG SideWinder
-
ghjghjghj schrieb:
weil du von Timer (Thread) auf den Hauptthread zugreifen willst.
Timer Events kommen im Hauptthread an.
-
Dein Timer läuft immer weiter und löst somit das Tick-Ereignis in der Frequenz von .Interval erneut aus, darum springt Dein Debugger ständig wieder in diese Methode. Erst wenn Du Deinen Timer auf Enabled = False setzt oder die .Stop Methode aufrufst wird kein Timer.Tick-Ereignis mehr ausgelöst.