C# laufende while Schleife unterbrechen

4 Antworten

ich würds so lösen, dass du im Laufe der Schleife entweder einen Knopf oder eine Tastenkombination ausliest. Wird die Taste bzw. der Knopf gedrückt, soll dadurch die Variable der While-Schleife sofort auf 10000ms gesetzt werden - damit läuft die Schleife beim nächsten Mal kein weiteres Mal durch und beendet sich direkt.

UNSAUBER könntest du natürlich auch zu einem Jump-Point im Programm springen. DAS allerdings kann man dann exploiten.

Also da gibt es mehrere Lösungen: Entweder durch break beenden oder was meiner Meinung nach am besten ist: Verwend einen Timer der auf ein Intervall von 400 ms gestellt ist. Dann überprüfst du ob die taste gedrückt wurde und beendest den timer (timer.Stop();) und schon funktionierts ;)


Kappaquii  21.11.2019, 20:39

Vielleicht kriege ich hier keine Antwort, aber wie prüft man, ob der Button gedrückt wurde?:D

LG

0

Nichts leichter als das! Du setzt dir eine in der gesamten Klasse (in diesem Fall eine Instanz der Klasse "Form") gültige, boolsche Variable. Die fragst du regelmäßig in deiner Schleife ab und verlässt diese, wenn die Variable "wahr" zurück gibt.

Das ganze in etwas Code:

public partial class Form1 : Form
{
  bool m_StopFlag = false;

  private void Irgendwie_Irgendwo_Irgendwann_Funktion()
  {
     while(true)
    {
       if(m_StopFlag)
         break;
    }
  }

}

Toraka  05.03.2012, 12:15

Obwohl es klar ist, füge ich es sicherheitshalber hinzu: Im Key-Press-Event setzt du die boolsche Variable auf "wahr", also true. Dadurch wird die While-Schleife beendet.

0

hat sich inzwischen schon gelöst eigentlich sehr simple xD

if (Console.KeyAvailable)
   if (Console.ReadKey(true).KeyChar == 'a') 
           break;

Toraka  05.03.2012, 13:28

Von der Konsole wurde nichts in der Frage erwähnt. Das ist natürlich unter Umständen von entscheidender Bedeutung! Immerhin kann hier nicht beliebig auf den Tasten herumgetippt und zugleich eine While-Schleife abgearbeitet werden, zumindest nicht ohne Theading.

Das beweist mal wieder: Fragen richtig stellen ist nicht weniger wichtig als die richtige Antwort. Wenn man denn eine richtige Antwort haben möchte.;)

0
Toraka  05.03.2012, 13:33
@Toraka

Eingabe und Schleife ist grundsätzlich möglich. Das hängt davon ab, wie man die Eingabe abfragt.

0
orkan23 
Beitragsersteller
 05.03.2012, 13:59
@Toraka

Entschuldigung, wenn es dich so aufgeregt hat! Bin halt nun mal ein Anfänger. Trotzdem danke für deine Mühe ;)

Gruß Orkan

0
Toraka  05.03.2012, 19:43
@orkan23

Es hat mich doch nicht aufgeregt, nein keine Sorge. Ich habe nur das Notebook gegen die Wand geschmissen, schreibe jetzt mit Funktastatur, während das TFT wie ein Ninja-Wurfstern in der Wand steckt. ;-)

Du hast doch selber einen Nutzen daraus! Sind die Fragen eindeutiger, werden mehr Leute darauf antworten und auch mehr hilfreiche Antworten folgen.

0
Toraka  05.03.2012, 19:51
@orkan23

Ich sehe erst jetzt, du bist es ja, das Graph-Problem! Hast du es denn auf die vorgeschlagene Weise dargestellt? Man kann zwar keine Daten direkt ablesen, da es dafür zu ungenau ist, doch die Form und die Richtung des Graphen kann eindeutig erkannt werden und ist dafür ausreichend, oder? Ich war zumindest selber erstaunt, dass es so gut dargestellt wurde.

0
orkan23 
Beitragsersteller
 06.03.2012, 17:50
@Toraka

an sich ist das ganze schon ok aber ich kann leider nicht mit formlen arbeiten :/

0