【C#】オープン中のファイルの内容を読み取る

何度も何度も調べなおしてるので自分用のメモです。

他のプロセスが開いているファイルを開こうとすると以下のエラーが発生する。

System.IO.IOException: 
別のプロセスで使用されているため、プロセスはファイル 'xxxx' にアクセスできません。

以下のように書けば読み取れるようにななるが、確実に読み取れる訳でははない。

string filePath = "c:\hoge\hoge.txt";
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var sr = new StreamReader(fs))
{
    // 読み取れる
}

これで読み取れなかった諦めること。