none
.Console.ReadLine() mündet in Endlosschleife unter Mono RRS feed

  • Frage

  • Hi,

    ich habe eine .NET 4.6 Konsolenapp, die sich durch Eingabe von "exit" beendet:

    internal static void RunConsole(string[] args)
            {
                // running as console app
                Program.Start(args);
                
                Console.WriteLine("Type 'exit' for shutdown.");
                StopIfExitIsWritten();
            }
    
            private static void StopIfExitIsWritten()
            {
                var line = Console.In.ReadLine();
                if (line != null && line.Equals("EXIT", StringComparison.OrdinalIgnoreCase))
                {
                    Console.WriteLine("Exit was requested.");
                    Program.Stop();
                }
                else
                {
                    StopIfExitIsWritten();
                }
            }

    Alles funktioniert unter Windows wunderbar. Lasse ich die Anwendung jedoch in einem Mono Docker Container laufen, wird bei dem Aufruf von

    var line = Console.In.ReadLine();

    offensichtlich nicht auf eine Eingabe gewartet. Folgendes wird ausgegeben:

    Das Problem nicht unter Windows sondern im Mono Container auf und dies ist ein Microsoft C# Forum, aber evtl. hat jemand von euch eine Idee evtl. auch für einen Workaround!?

    Bei meinen Untersuchungen habe ich eine Ausgabe (Console.WriteLine("Some output")) direkt hinter den Console.ReadLine() eingefügt. Die Ausgabe ("Some output") wurde quasi umgehend wie in einer Schleife ausgegeben, d.h. dass der Aufruf von "Console.ReadLine()" nicht blockiert.

    Ich habe hier einen Hinweis gefunden.

    Fixed the Problem:
    "Run">"Run With">"Custom Configuration" and enable "Run on external console" and "Pause console output"

    Ich fürchte nur, es bezieht sich nicht auf Visual Studio. In meinem VS 2019 Community (V16.4.0) suche ich vergeblich nach einer solchen Option. Gibt es diese nicht in der Community Edition oder ist diese Option tatsächlich nur Bestandteil von MonoDevelop?

    Viele Grüße,
    Christian



    • Bearbeitet ChristianHavel Montag, 6. Januar 2020 18:46 weitere Informationen
    Montag, 6. Januar 2020 14:38

Alle Antworten