У меня есть фрагмент кода, который я использую при отладке для записи строки информации в файл.
private bool appendLine(string line2Write, string fileName)
{
try
{
StreamWriter tw;
using (tw = File.AppendText(fileName))
{
tw.WriteLine(line2Write);
tw.Close();
}
}
catch (Exception ex)
{
DialogResult result = MessageBox.Show("Unable to write to: " + fileName + "\r\n" + ex.ToString() + "\r\n OK to retry", "File Sysytem Error", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
if (result == DialogResult.Cancel)
{
return false;
}
}
return true;
}
Я не хочу оставлять файл открытым, потому что, если это отладочная информация, я не хочу рисковать последним битом, если программа выйдет из строя.
Я, вероятно, не понимаю, что мне говорит CA2202.
Вот весь текст ошибки:
Предупреждение CA2202. Объект «tw» может быть удален более одного раза в методе «familyFinances.appendLine(string, string)». Чтобы избежать создания System.ObjectDisposedException, вы не должны вызывать Dispose для объекта более одного раза.
"tw" существует только в этом коде. И у меня никогда не было ошибок при запуске таким образом.
Варианты или предложения?
tw.Close();
— первое удаление, выход из блокаusing
— второе. - person dymanoid   schedule 04.10.2018