Anzeige

 Timer in WinForm

#1
Jaa, Hallo erstmal.

Ich habe folgendes Problem:
Ich möchte in meiner Anwendung einen Timer machen, welcher Sekunden zählt und sich entsprechend aktualisiert. Wenn ich jetzt aber folgendes schreibe, wird das Programm zwar ausgeführt, allerdings erscheint das Fenster nicht mehr
C++:
public Form1()
{
         InitializeComponent();
         UpdateNumber();
}

public void UpdateNumber()
{
         var sec = 0;

        while(true)
        {
                label2.Text = Convert.ToString(sec);
                Thread.Sleep(1000);
                sec++;
        }
}
Falls es helfen sollte:
Ich benutze Visual Studio Community 2015 und als Framework .NET 4.6.1.
 
#2
Hi

Bei einem Winforms-Dialog läuft im Hintergrund dauerhaft ein vorgefertigter Code, der den Dialog am Leben hält (was da alles gemacht wird geht hier zu weit, aber ohne dauerhafte Arbeit geht gar nichts). Die Methoden, die du implementierst, ist nur, was deinen Dialog vom Standarddialog unterscheidet. Ab und zu verwendet dann der Hintergrundcode deine Methoden.

Das bedeutet aber auch, dass die Methoden nicht lang (oder unendlich) dauern sollten. Der Hintergrundcode wartet auf die Fertigstellung => kann derweil nichts tun => Probleme, wenns länger als ein paar Millisekunden steckt.

Man könnte mit Threads eine (eher umständliche) Lösung basteln, aber es gibt schon eine fertige Timer-Klasse, die einfacher ist. Siehe folgendes Beispiel: http://stackoverflow.com/a/1142893/3134621
 
Anzeige
Anzeige