using (var file_stream = File.Create("users.xml"))
{
var serializer = new XmlSerializer(typeof(PasswordManager));
serializer.Serialize(file_stream, this);
file_stream.Close();
}
Использование вышеуказанного кода работает отлично. Однако, когда я укоротить до:Xml Сериализация без утилизации
var serializer = new XmlSerializer(typeof(PasswordManager));
serializer.Serialize(File.Create("users.xml"), this);
я получаю следующее исключение при попытке десериализации файл users.xml в том же тесте: Процесс не может получить доступ к файлу «users.xml», потому что это используя другой процесс.
Причина, по всей видимости, в том, что метод File.Create возвращает открытый FileStream, который я не могу закрыть, поскольку я не придерживаюсь его ссылки.
Мой плохой, или Microsoft? ;-)
Здесь есть базовая концепция, которую вам не хватает (что легко сделать) - прочитайте об использовании объектов, которые используют интерфейс iDisposable. – overslacked