endlosschleife in Klassen-Methode stoppen

flotschie

Mitglied
hallo,

ich habe eine klasse mit einer methode geschrieben, die beim aufruf eine endlosschleife startet.

Es ist ein Windows - Forms Programm, ich möchte jetzt per Button diese Endlosschleife stoppen bzw. das Programm ganz stoppen.

Wie macht man das am besten?
 
Hallo.

In dem du anstatt direkt dem boolschen Wert 'true' in der while-Schleife als Bedingung, eine Variable nimmst, welche du im Button-Event auf false setzt.
Beim nächsten durchlauf ist die Schleife beendet.

Das Prorgamm kannst du mit Application.Quit(); beenden.

Code:
// C# - Code - sollte aber ersichtlich sein, was was ist. Hoffe ich halt.

private bool isRunning = true;

private void myButton_Click(object sender, EventArgs ea)
{
    isRunning = false;
}

private void Blubb()
{
    while(isRunning)
    {
        // mach was..
    {
}

MfG,
Alex
 
Hi,

bei mir reagiert die Form nicht mehr auf Click-Events wenn ich in eine Endlosschleife gerate. Bei flotschie aber anscheinend schon. Weiss jemand wieso?

Danke
 
Hi,

ja, vom Code her sollte alles richtig sein. Es ist die Form, die reagiert ueberhaupt nicht mehr. Ich kann das Teil nicht mal mehr schließen.
Bei mir geht es nur wenn ich in der Schleife "Application.DoEvents()" aufrufe.
Naja, nicht so wichtig. Wollte nur wissen wieso das bei dir geht und bei mir nicht.
 
Ok. Flotschie, bitte Groß-/Kleinschreibung beachten, danke.

> wie kann man abfragen ob einige threads noch aktiv sind?
Thread.IsAlive Property

erhardt, wenn du eine solche Schleife brauchst, starte für sie einen neuen Thread. Das wird flotschie auch gemacht haben.
Wenn du das nicht machst, benutzt die Schleife den selben Thread wie für die GUI und blockiert diesen. (Kann nicht mehr auf Events reagieren etc.)
Thread Class
In der MSDN und auch hier im Forum gibts näheres zu Threads.
 
Original geschrieben von flotschie
Ok. Hoffenltich merk ichs mir ;)
Erm.

Bitte achte unbedingt auf Deine Rechtschreibung, eine klare Fragestellung bzw. Antwort und eine sinnvolle Struktur. Beiträge mit durchgehender Kleinschreibung, Chatsprache und/oder mangelhafter Struktur werden kommentarlos gelöscht.
Mehr dazu findest Du in unserer Netiquette.

Bei jedem Schreiben eines Beitrags wirst du durch die rote Box unterm Eingabefeld daran erinnert.
 
Hi,

ja er wird wohl Threads benutzt haben. War aus seinem ersten Post nicht ersichtlich, deshalb hab ich mich gewundert und mal nachgefragt ob es noch eine andere Moeglichkeit gibt.

Jetzt ist es ja geklaert :)

Gruß
 
Zurück