You say you have been asked to show a progress bar while a large file is loading. Is that because the users genuinely want to see the exact % of file loading, or just because they want visual feedback that something is happening?
If the latter is true, then the solution becomes much simpler. Just do reader.ReadToEnd()
on a background thread, and display a marquee-type progress bar instead of a proper one.
I raise this point because in my experience this is often the case. When you are writing a data processing program, then users will definitely be interested in a % complete figure, but for simple-but-slow UI updates, they are more likely to just want to know that the computer hasn't crashed. :-)