StreamReader.ReadLine will hang in an infinite loop

Compare with null not with empty string:

https://msdn.microsoft.com/en-us/library/system.io.streamreader.readline(v=vs.110).aspx

Return Value Type: System.String The next line from the input stream, or null if the end of the input stream is reached.

    do
    {
        line = stream.ReadLine();
        // Do some work here
    } while (line != null);

A better approach, however, is to let .Net do the work (line by line file reading) for you and drop all readers:

  foreach (String line in File.ReadLines(file)) {
    // Do some work here
  }

Correct approach 1 (EndOfStream) :

using(StreamReader sr = new StreamReader(...)) {
    while(!sr.EndOfStream) {
        string line = sr.ReadLine();
        Console.WriteLine(line);
    }
}

Correct approach 2 (Peek)

using(StreamReader sr = new StreamReader(...)) {
    while(sr.Peek() >= 0) {
        string line = sr.ReadLine();
    }
}

Note: that it is incorrect to threat an empty string as end of file.

if the network connection lost at some point while I am reading, it'll stay in the same line again and again looping in an infinite loop by resulting the same line as the result from stream.ReadLine()

I've checked this scenario right now - the System.IO.IOException ("The network path was not found."} should be thrown in this case.

Wrapping this with a try catch block will not fix my problem, will it?

In this case you can break the reading as follows:

string line;
do {
    try {
        line = sr.ReadLine();
        // Do some work here
    }
    catch(System.IO.IOException) {
        break; 
    }
} while(line != null);