Laden...

Mehrere Aktionen zeitverzögert in button1_Click ausführen [==> stattdessen Timer verwenden]

Erstellt von drucker vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.543 Views
Thema geschlossen
D
drucker Themenstarter:in
2 Beiträge seit 2012
vor 11 Jahren
Mehrere Aktionen zeitverzögert in button1_Click ausführen [==> stattdessen Timer verwenden]

Hallo an alle leidenschaftlichen Programmierer,

Hier mein Code:

int i = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "hallo welt";
            Thread.Sleep(1000);
            label1.Text = "";
            for (i = 3; i <= 7; i++)
                label1.Text += i + "\n";
        }

Und hier meine gewünschte Ausgabe: (...nach einiger Zeit... beudetet, dass label1 nach kurzer Zeit seinen Text ändern soll)

_hallo Welt
...nach einiger Zeit...

...nach einiger Zeit...
3
...nach einiger Zeit...
4
...nach einiger Zeit...
5
...nach einiger Zeit...
6
...nach einiger Zeit...
7_

Nur leider erscheint sofort
3
4
5
6
7

Mit anderen Worten: Ist es möglich die oben gewünschte Ausgabe zu erhalten, wenn ja wie?

Vielen Dank im Voraus,

Drucker

H
18 Beiträge seit 2010
vor 11 Jahren

Hallo,

da fehlt ein Sleep in der for-Schleife. Zudem wird die Variable i im Kopf der for-Schleife initialisiert, eine Initialisierung außerhalb der Methode ist daher unnötig.


        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "hallo welt";
            Thread.Sleep(1000);
            label1.Text = "";
            for (i = 3; i <= 7; i++)    
            {
                label1.Text += i + "\n";
                Thread.Sleep(1000);
             }
        }

Gruß
Patrick

Hinweis von herbivore vor 11 Jahren

Auch ein Thread.Sleep in der Schleife hilft nichts. Hier ist der ganze Ansatz falsch. Wie es (besser bzw. überhaupt) geht, steht in der weiter unten verlinkten FAQ.

M
402 Beiträge seit 2005
vor 11 Jahren

Hi...

was fehlt sind Grundlagen... 😉

und zu dem...
[FAQ] Warum blockiert mein GUI?

lg

D
drucker Themenstarter:in
2 Beiträge seit 2012
vor 11 Jahren

Hallo holliesoft,

mit einem weiteren Sleep() löst es das Problem nicht.

Hallo M@TUK,

nach dem ich mir den Link angesehen habe, muss ich dir (leider) recht geben bzgl. der Grundlagen. --> Liegt wohl daran, dass ich zusehr in C denke, als in C#...

Falls du mir zur Lösung des Problem weitere Tipps,Links geben kannst wäre ich dir sehr dankbar.

Werde meine Lösung(en) und Teillösung(en) als bald als möglich hier präsentieren.

Drucker

5.742 Beiträge seit 2007
vor 11 Jahren

Stichwort: Timer (sollte aber auch in dem FAQ-Beitrag fallen, den du ja hoffentlich gelesen hast).

Liegt wohl daran, dass ich zusehr in C denke, als in C#...

Nein, du denkst zu wenig ereignisgesteuert; auch unter C muss man - wenn man Windows-Programme entwickelt - für so etwas einen Timer einsetzen 😉

Das mit dem Sleep ist zwar eine Variante für eingebettete Systeme, aber aus denen im FAQ-Beitrag genannten Gründen keine Alternative für WinForms.

Damit sollte aber alles gesagt sein; ==> Geschlossen

Thema geschlossen