Я открываю поток и затем десериализирую данные в потоке. Однако я добавил элемент в объект SavedEventSet, поэтому теперь, когда я пытаюсь открыть старый файл, он вызывает исключение в строке десериализации.
Это нормально для меня (пока), но проблема в том, что я обрабатываю исключение, но никогда не закрываю поток (потому что исключение произошло до того, как я закрываю поток), поэтому при попытке открыть файл снова не позволит мне, потому что он используется.
Как закрыть поток после этого исключения? Если я помещаю stream.Close () в catch или finally, он жалуется на попытку доступа к неназначенной локальной переменной. Кажется плохой практикой открывать случайный файл, который, я знаю, там есть. Есть ли способ открыть поток так, чтобы он был похож на пустой конструктор, чтобы он выглядел так, как будто он назначен?
Спасибо
SavedEventSet sES;
OpenFileDialog oFD = new OpenFileDialog();
Stream stream;
BinaryFormatter bF;
try
{
oFD.InitialDirectory = this.path;
oFD.Title = "Open Event Saved File.";
oFD.ShowDialog();
if(oFD.FileName.Contains(".sav"))
{
stream = File.Open(oFD.FileName, FileMode.Open);
bF = new BinaryFormatter();
sES = (SavedEventSet)bF.Deserialize(stream);
stream.Close();
}
}
catch (Exception ex)
{
stream.Close();
/*handle Exception*/
}