// Get Stream of the file fileReader = new StreamReader(File.Open(this.FileName, FileMode.Open)); FileInfo fileInfo = new FileInfo(this.FileName); long bytesRead = 0; // Change the 75 for performance. Find a number that suits your application best int bufferLength = 1024 * 75; while (!fileReader.EndOfStream) { double completePercent = ((double)bytesRead / (double)fileInfo.Length); // I am using my own Progress Bar Dialog I left in here to show an example this.ProgressBar.UpdateProgressBar(completePercent); int readLength = bufferLength; if ((fileInfo.Length - bytesRead) < readLength) { // There is less in the file than the lenght I am going to read so change it to the // smaller value readLength = (int)(fileInfo.Length - bytesRead); } char[] buffer = new char[readLength]; // GEt the next chunk of the file bytesRead += (long)(fileReader.Read(buffer, 0, readLength)); // This will help the file load much faster string currentLine = new string(buffer).Replace(" ", string.Empty); // Load in background this.Dispatcher.BeginInvoke(new Action(() => { TextRange range = new TextRange(textBox.Document.ContentEnd, textBox.Document.ContentEnd); range.Text = currentLine; }), DispatcherPriority.Normal); }