var stdin = Console.OpenStandardInput();
char[] buffer = new char[20];
var length = 0;

                    var lengthBytes = new byte[4];
                    stdin.Read(lengthBytes, 0, 4);
                    length = BitConverter.ToInt32(lengthBytes, 0);

                    buffer = new char[length];
                    using (var reader = new StreamReader(stdin))
                    {
                        if (reader.Peek() >= 0)
                        {
                            reader.Read(buffer, 0, buffer.Length);
                        }
                    }



Oczywiście i Peek i Read są blikujące.
Jak to się robi w C# aby nie blokowało read?

W Delphi mozna było odczytać rozmiar strumienia i nie czytać jak nie było danych a jak tio się robi w C#?

stdin.Length nie działa.