I have always used:
using (StreamReader reader = new StreamReader(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
{
}
According to MSDN , File.OpenRead is the same as:
new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)
(the difference is that FileShare Read vs ReadWrite)