Почему Анализ кода говорит мне: «Не располагайте объекты несколько раз» здесь:
По этому коду:
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();
. . .
?