Eine Pause in C# einbauen



  • Meine Console Anwendung gibt alle Ausgeben und schliesst ab. Wie kann ich eine Pause einbauen und nach einem "Enter" es weiter läuft ?

    gruss



  • Mit Console.read müsste es gehen.
    Mit Thread.Sleep(int millisecond) kannst du dein Programm eine Weile schlafen lassen



  • Ich würde es mit einer Do While-Schleife machen :

    do
    {
      // Programm Code 
      Console.WriteLine("press l for loop");
    
    }while(Console.ReadLine!="l");
    

    mfg Heiko



  • alos, ich würd das nicht in einer do while schleife machen, die dauernd text ausgibt.....



  • Gut, wenn nicht immer ein Text ausgegeben werden soll, dann fürde ich in der Mainfunktion einen Timer initialisieren. Den eigendlichen Programmcode dann in das TimerEvenvent packen. Dann aber wieder eine Do/While-Schleife in der Mainfunktion setzen um auf ein Ende per Tastendruck zu warten. Ist sicherlich eine etwas elegantere Lösung



  • Eine Schleife die so oft ausgeführt wird belastet das System viel zu sehr. Davon abgesehen wirde der oben gepostete Beispielcode so wie so nicht funtkionieren. Warum nicht einfach die Anwendung mit System.Console.Read() auf eine wilkürliche Tastatureingabe warten lassen?



  • Wenn man sich besagte Schleife mal genauer ansieht und das ganze mal Compiliert, dann kann man feststellen, das in dem While-Stademant das Progi solange anhält, bis eine entprechende Taste gedrückt wird, also nicht mit Systemlast usw......



  • Die Schleife wird so oft ausgeführt bis die Eingabe erfolgt und das belastet unnötig das System und kann unter Umständen dazu führen das sich die Anwendung aufhängt und davon abgesehen würde schon beim kompilieren ein Fehler ausgegeben werden, da ReadLine eine Methode und keine Eigenschaft ist und somit () erwartet.



  • schrankwand schrieb:

    Die Schleife wird so oft ausgeführt bis die Eingabe erfolgt und das belastet unnötig das System und kann unter Umständen dazu führen das sich die Anwendung aufhängt und davon abgesehen würde schon beim kompilieren ein Fehler ausgegeben werden, da ReadLine eine Methode und keine Eigenschaft ist und somit () erwartet.

    Das stimmt nicht, die Leseoperationen auf dem Inputstream sind blocking und nicht asynchron.



  • Deshalb ist es natürlich auch sinnfrei, überhaupt eine Schleife zu machen.



  • Ferner verhält sich eine Konsolenanwendung wie eine Batch-Datei, wenn nämlich die Main-Funktion abgelaufen ist, dann wird die Konsole beendet. Und um das zu verhindern kann man das mit einer Schleife Realisieren, die Blocking ist. Sollte es einwände geben, so lasse ich mich eines besseren belehren.

    Heiko



  • Ja, wieso eine Schleife? Und was ist eine "Schleife, die blocking ist" ?
    Und die Konsole wird beendet, wenn alle Threads beendet sind und nicht, wenn Main beendet ist.



  • Ich bin von der o.g Fragestellung augegangen, der halt keine Anderen Thread wewendet. Gut mit Blocking Schleife habe ich mich wohl nicht korrekt ausgedrückt. Ich meine das in dieser Schleife eine Funktion aufgerufen wird die Blocking ist wie z.B. Console.Read(). Dan noch als Abbruchbestimmung in eine Schleife packen

    Heiko



  • ja gut, aber mal ne Frage gibt es in C# eigentlich ne Methode die äquivalent zur C-Funktion system() ist? Dann könnte man ja system("PAUSE") aufrufen und ausserdem würde mich ma intressieren ob es in C# überhaupt möglich ist solche Komandos auszuführen.



  • HFinke schrieb:

    Ich bin von der o.g Fragestellung augegangen, der halt keine Anderen Thread wewendet. Gut mit Blocking Schleife habe ich mich wohl nicht korrekt ausgedrückt. Ich meine das in dieser Schleife eine Funktion aufgerufen wird die Blocking ist wie z.B. Console.Read(). Dan noch als Abbruchbestimmung in eine Schleife packen

    Heiko

    Ja, und wieso jetzt eine Schleife? Er will doch nur _einen_ Tastendruck abwarten.


Anmelden zum Antworten