*hüstel* Ist dir nicht die Property BaseStream deines StreamReaders aufgefallen?
Die ist vom Typ Stream und hat deshalb die Eigenschaft "Length" -> Anzahl der Bytes in dem Stream.
Außerdem gibt sie dir deine Position im Stream, wenn du dich mit ReadLine darin bewegst.
BTW: Selbst per StreamReader.ReadToEnd() landet auch eine Riesen-Datei in Sekundenbruchteilen in einem String.

Du benutzt wohl keinen StringBuilder, oder? Der verwendet ständig die gleiche Referenz auf den gleichen string -> viel schneller.
Delphi-Quellcode:
System.Text.StringBuilder str = new System.Text.StringBuilder();
while ( DeinStreamReader.Peek() >= 0 )
str.AppendLine( DeinStreamReader.ReadLine() );
string XYZ = str.ToSTring();
Oder einfach:
string XYZ = DeinStreamReader.ReadToEnd();
Zitat:
Zugegeben, ich benutze Visual C# 2005 Beta
Geniale
IDE, oder? Ich kann den Release vom VS05 kaum noch abwarten.

(dauert aber noch so lange

).
Aber denk' dran -> keine kommerzielle Nutzung mit der Beta!