Почему Анализ кода говорит мне: «Не располагайте объекты несколько раз» здесь:

По этому коду:

public static string Base64FromFileName(string fileName)
{
    try
    {
        FileInfo fInfo = new FileInfo(fileName);
        long numBytes = fInfo.Length;
        FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(fStream);
        byte[] bdata = br.ReadBytes((int)numBytes);
        br.Close();
        fStream.Close();
        return Convert.ToBase64String(bdata);
    }
    catch(Exception e)
    {
        throw e;
    }
}

... Я получаю, благодаря инструменту анализа кода Visual Studio, предупреждение "Не удаляйте объекты несколько раз ... Во избежание создания исключения System.ObjectDisposedException не следует вызывать Dispose для объекта более одного раза."в строке" fStream.Close (); ".

Зачем? Располагается ли fStream в строке выше, где BinaryReader закрыт?

Не лучше ли мне рефакторинг так:

. . .
using (FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))   
{
    using (BinaryReader br = new BinaryReader(fStream)) 
    {
        byte[] bdata = br.ReadBytes((int)numBytes);
    } //br.Close();
} //fStream.Close();
. . .

?

Ответы на вопрос(2)

Ваш ответ на вопрос