wie warte ich 15 Sekunden lang auf Konsoleneingabe in c #

8

Ich muss um Eingabe in der Konsole bitten und warte ein paar Sekunden später muss ich auf einen Wert zurücksetzen. Wie kann man im Prinzip die Zeit für die Konsoleneingabe in c # eingeben und mit den Standardeinstellungen fortfahren? Wenn Sie Beispielcode haben, wäre das großartig.

    
Prache 17.10.2008, 01:24
quelle

4 Antworten

3

Sie könnten das Timer-Objekt in System.Timers.Timer verwenden und es auf 60 Sekunden setzen, es aktivieren und wenn jemand etwas in die Konsole eingibt, deaktivieren Sie es einfach, wenn nicht, dann behandeln Sie einfach das, was im Timer.Elapsed-Ereignis passiert .

%Vor%

Nicht sicher, ob dies der beste Weg ist. Ich habe das getestet, aber wie gesagt, es ist vielleicht nicht der beste Weg.

    
Nathan W 17.10.2008 01:36
quelle
2

Siehe hier , es benutzt eine nette kleine Abfragesprache die Konsole, die zwar ein bisschen grob, sehr effektiv.

    
Mark 17.10.2008 01:29
quelle
2

Sie sollten in Erwägung ziehen, beispielsweise ein Befehlszeilenargument hinzuzufügen, das als Schalter zwischen einem automatischen Modus mit Standardwerten und dem vollständigen Benutzereingabemodus dient.

Wenn Sie eine spezifische Interpretation Ihrer Anfrage verwenden, wird es ziemlich trivial. In diesem Modell wird der Benutzer zur Eingabe aufgefordert. Wenn sie nach einer Zeitüberschreitung nichts eingeben, wird der Standardwert verwendet. Wenn sie etwas eingeben, wird kein Timeout verwendet. Dies betrifft auch das Usability-Problem, einen Standardwert aufzugeben und zu verwenden, wenn sie lange brauchen, um etwas einzugeben.

%Vor%

Weil ich so lange damit verbracht habe, bevor ich gemerkt habe, dass es einen besseren Weg gibt, hier ist ein Code, den ich gerade geklopft habe, um eine Zeichenfolge von der Konsole mit einer Zeitüberschreitung zu lesen. Es hat auch die Möglichkeit, die aktuelle Zeit auf der Konsole zu drucken. Es ist nicht sehr gründlich getestet, so dass es wahrscheinlich viele Bugs gibt. Die Callback-Funktion verwendet die .NET 3.0-Aktion. Wenn dies jedoch für C # 2.0 gilt, können Sie sie einfach in einen Delegaten umwandeln.

%Vor%     
ICR 17.10.2008 14:15
quelle
0

Eine Möglichkeit wäre eine Schleife, die Console.In.Peek () aufruft und auf die Eingabe wartet oder genügend Zeit für die Weiterleitung.

    
Doug McClean 17.10.2008 01:29
quelle