Anushree
Anushree

Reputation: 211

The end of stream is not being detected by reader.EndOfStream

I am reading strings from command line. But end of stream can not be detected by my program. How do I reconstruct this or is there a way to explicitly set EndOfStream to true?

List<String> str = new List<String>();

        using (StreamReader reader = new StreamReader(Console.OpenStandardInput()))

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();

                if (line != string.Empty)
                {
                    str.Add(line);
                }
            }

Upvotes: 1

Views: 1329

Answers (1)

thelostcode
thelostcode

Reputation: 341

That cannot work out by design. The stdin/stdout console streams are opened as long as the program is active. The EndOfStream is executed just before you close the application in this case.

A good solution for your issue is.

using System;

public class Example
{
   public static void Main()
   {
      string line;
      do { 
         line = Console.ReadLine();
         if (line != null) 
            Console.WriteLine("Now I have detected the end of stream.... " + line);
      } while (line != null);   
   }
}

Upvotes: 1

Related Questions