Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Mehrere Aktionen zeitverzögert in button1_Click ausführen [==> stattdessen Timer verwenden]
drucker
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
holliesoft
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: Bad Kreuznach

beantworten | zitieren | melden

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

Moderationshinweis von herbivore (18.07.2012 - 08:18:52):

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.

private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

Hi...

was fehlt sind Grundlagen... ;)

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

lg
private Nachricht | Beiträge des Benutzers
drucker
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

Hallo holliesoft,

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


Hallo [email protected],

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
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Stichwort: Timer (sollte aber auch in dem FAQ-Beitrag fallen, den du ja hoffentlich gelesen hast).
Zitat
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
private Nachricht | Beiträge des Benutzers