Hey Leute,
ich habe eine kleines Problem. Und zwar habe ich eine Schleife gebaut die Meinen Text zum blinken bringt. Ich möchte jetzt dass die Schleife so lange läuft bis ich eine beliebige Taste auf der Tastatur drücke.
Mir ist mein Fehler auch bekannt:
Die Schleife stoppt weil sie bei dem Befehl ist auf eine Eingabe zu warten.
ConsoleKeyInfo weiter = Console.ReadKey();
Wie schaffe ich es jetzt dass sie den Befehl solange ignoriert bis er auch wirklich erst benutzt wird?
while (true)
{
WriteBlinkingText(txt, 500, true);
WriteBlinkingText(txt, 500, false);
ConsoleKeyInfo weiter = Console.ReadKey();
if (weiter.KeyChar == 13)
{
break;
}
Dazu musst du die Schleife in einem Thread laufen lassen.
Dann kannst du die Eingabe von der Konsole einlesen während die Schleife läuft.
Anschließend merkst du dir die Eingabe in einer Variable, die du in der Schleife überprüfen kannst.
Es geht auch anders - schau dir mal die Console.KeyAvailable-Eigenschaft an.
Danke für die beiden Tipps. Doch selbst nach langem probieren bekomme ich es nicht gebacken 🙄 ?(
Was hast du denn probiert? Wo hakts? Was bekommst du nicht gebacken? Haben die Tipps dir geholfen? Wie hast du sie eingebaut, dass was nicht funktioniert?
[Hinweis] Wie poste ich richtig? Punkt 5
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hab es jetzt doch hinbekommen. Mit der KeyAvailable-Methode (Danke an Th69)
do
{
while (!Console.KeyAvailable)
{
System.Console.SetCursorPosition(System.Console.WindowWidth / 2 - txt.Length / 2, System.Console.CursorTop);
WriteBlinkingText(txt, 1000, true);
WriteBlinkingText(txt, 500, false);
}
} while (Console.ReadKey(true).Key != ConsoleKey.Enter);
Hallo,
warum hantierst Du da mit geschachtelten Schleifen?
es reicht, wenn Du in der ursprünglichen while(true)
-Schleife irgendwo die beiden Zeilen unterbringst:
if (Console.KeyAvailable && Console.ReadKey().Key == ConsoleKey.Enter)
break;
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca