6

Ich habe eine sehr einfache Konsolen-App.Warum blockiert Console.ReadKey() die Ausgabe von Console.WriteLine in einem anderen Thread?

static void Main(string[] args) 
{ 
    DoAsync(); 
    Console.ReadKey(); 
} 

Hier DoAsync beginnt der Aufgabe gestellt und warten zurückgibt nicht für fertigstellung Aufgaben. Jede Aufgabe schreibt in die Konsole, aber die Ausgabe wird nicht angezeigt, bevor die Taste gedrückt wird.
Wenn ich Console.ReadLine verwende, funktioniert alles gut.

Also bin ich neugierig auf ReadKey() eigenschaften.

Antwort

8

Von the documentation für Console.ReadKey():

Die ReadKey Verfahren wartet, das heißt, die Blöcke auf dem Gewinde Ausgeben des ReadKey Verfahren, bis ein Zeichen oder eine Funktionstaste gedrückt wird.

Was es tatsächlich tut, ist eine Sperre auf Console.InternalSyncObject erwerben, die weitere Operationen auf der Konsole verhindert.

Die Methode Console.ReadLine() blockiert den Thread auf diese Weise nicht.

Lesen this article Ich vermute, Sie haben .NET 4.5 installiert?

+0

Vielen-vielen Dank, ich suchte eine Ebene höher (http://msdn.microsoft.com/en-us/library/w19esh7k.aspx) Und für den Artikel auch. –

Verwandte Themen