Entwickler-Ecke
WinForms - while-Schleife mit button unterbrechen
Stefanie - Di 27.03.07 10:17
Titel: while-Schleife mit button unterbrechen
Hallo!
Ich habe folgendes Problem:
Ich schreibe ein programm, das mit einem button gestartet und mit einem button wieder abgebrochen wird.
wenn das programm gestartet ist, läuft es in einer while-schleife.
wie kann ich mit einem Click auf den Stopp-Button den prozess beenden?
hat jemand eine idee?
Vielen dank!
Moderiert von Christian S.: Topic aus C# - Die Sprache verschoben am Di 27.03.2007 um 10:18
UGrohne - Di 27.03.07 12:43
In der Schleife musst Du die Nachrichten bearbeiten lassen und als Abbruchbedingung einen Boolean haben, der anfangs auf False gesetzt ist:
Delphi-Quelltext
1: 2: 3: 4: 5:
| cancel := false; while not cancel do begin Application.ProcessMessages; end; |
Im EventHandler des Buttons setzt Du dann cancel auf true. Das wars eigentlich ;)
//EDIT: Mist, gerade gesehen, dass das hier im C#-Forum steht ;). Aber da gehts ähnlich:
C#-Quelltext
1: 2: 3: 4: 5:
| cancel = false; while (!cancel) { Application.DoEvents(); } |
Stefanie - Di 27.03.07 12:51
danke!
aber was heisst "Application.doevents()"? kommt da einfach mein code?
UGrohne - Di 27.03.07 13:19
Stefanie hat folgendes geschrieben: |
danke!
aber was heisst "Application.doevents()"? kommt da einfach mein code? |
Nein, der kommt davor oder danach (vgl. Delphi-Code, hab den Kommentar da unten einfach vergessen). DoEvents dorgt für de Abarbeitung der Nachrichtenschleife, also dass beispielsweise ein Button-Click registriert und verarbeitet wird. Du solltest natürlich darauf achten, dass jeder Schleifendurchgang nicht allzuviel Zeit in Anspruch nimmt, weil die Applikation in dieser Zeit "hängt". Sollte das jedoch der Fall sein, solltest Du über die Auslagerung in Threads nachdenken.
Stefanie - Di 27.03.07 16:03
ich habe es gleich mal ausprobiert, aber es läuf nicht so, wie ich es gerne hätte.
denn die schlaufe wird dennoch weiter ausgeführt, wenn mein button-ereignis vorbei ist.
ich habe in dem button-ereignis ein "Close();" eingefügt, um zu testen, ob es funktioniert. die form geht
zu, aber die Schlaufe läuft weiter...wie kann sie ganz abbrechen?
Christian S. - Di 27.03.07 16:07
Es hilft wahrscheinlich mehr, wenn Du mal Deinen Code zeigst. Interessant: Deklariation der Variabel cancel, die Schleife und außerdem den Code des Buttonclick-Ereignisses
JüTho - Mi 28.03.07 10:07
Hallo Stefanie,
Stefanie hat folgendes geschrieben: |
ich habe es gleich mal ausprobiert, aber es läuf nicht so, wie ich es gerne hätte.
denn die schlaufe wird dennoch weiter ausgeführt, wenn mein button-ereignis vorbei ist.
ich habe in dem button-ereignis ein "Close();" eingefügt, um zu testen, ob es funktioniert. die form geht
zu, aber die Schlaufe läuft weiter...wie kann sie ganz abbrechen? |
Dein Button-Ereignis muss
der Schleife mitteilen, dass sie beendet werden soll. Die
cancel-Variable von Christian muss also für das Button-Ereignis "zugänglich" sein und sie entsprechend ändern.
Gruß Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!