Hallo zusammen,
ich möchte eine Endlosschleife durch einmaligen Klick auf einen Button beenden können.
Habe dazu im Forum schon gesucht und auch Hinweise gefunden, dass "Application.DoEvents()" integriert werden muss, damit Ereignisse auch abgefragt werden, wenn das Programm mit der Schleife ausgelastet ist.
Das mit dem Abbrechen funktioniert zwar grundsätzlich, aber ich muss immer 2 mal auf den Abbruch-Button klicken, damit die Schleife auch verlassen wird.
Dieses Problem wurde zwar hier im Forum auch schon besprochen, aber soweit ich gesehen habe, immer mit alternativen Lösungen (z. B. Timer).
Ich suche aber eine Lösung, um tatsächlich mit einmaligem Button-Click aus einer Endlos-Do-While-Schleife auszusteigen.
Nachfolgend ein Beispiel-Code und zuvor noch folgende Anmerkung:
Mir geht es letztendlich auch darum, das Ganze zu verstehen. Wenn ich im Abbruch-Event einen Haltepunkt setze, stelle ich fest, dass dieses nach einmaligem Klick auf den Button nicht erreicht wird. Erst nach zweimaligem Klick verzweigt das Programm in das Abbruch-Button-Event. Warum ist das so, bzw. was muss am Code noch verändert werden?
Mike
ich möchte eine Endlosschleife durch einmaligen Klick auf einen Button beenden können.
Habe dazu im Forum schon gesucht und auch Hinweise gefunden, dass "Application.DoEvents()" integriert werden muss, damit Ereignisse auch abgefragt werden, wenn das Programm mit der Schleife ausgelastet ist.
Das mit dem Abbrechen funktioniert zwar grundsätzlich, aber ich muss immer 2 mal auf den Abbruch-Button klicken, damit die Schleife auch verlassen wird.
Dieses Problem wurde zwar hier im Forum auch schon besprochen, aber soweit ich gesehen habe, immer mit alternativen Lösungen (z. B. Timer).
Ich suche aber eine Lösung, um tatsächlich mit einmaligem Button-Click aus einer Endlos-Do-While-Schleife auszusteigen.
Nachfolgend ein Beispiel-Code und zuvor noch folgende Anmerkung:
Mir geht es letztendlich auch darum, das Ganze zu verstehen. Wenn ich im Abbruch-Event einen Haltepunkt setze, stelle ich fest, dass dieses nach einmaligem Klick auf den Button nicht erreicht wird. Erst nach zweimaligem Klick verzweigt das Programm in das Abbruch-Button-Event. Warum ist das so, bzw. was muss am Code noch verändert werden?
Mike
VB.NET-Quellcode
- Public Class Form1
- Dim Beenden As Boolean = False
- Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click
- Dim Zähler As Integer = 0
- Do While Not Beenden
- Zähler = Zähler + 1
- lblAnzeige.Text = Zähler.ToString
- Application.DoEvents()
- Loop
- End Sub
- Private Sub cmdStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStop.Click
- Beenden = True
- MsgBox("Schleife wird beendet...")
- End Sub
- End Class