Файл в следующей функции по-прежнему используется после инструкции using. Как я могу это исправить, чтобы освободить файл ....Файл C#, который все еще используется после оператора using
/// <summary>
/// Serializes an object to an xml file.
/// </summary>
/// <param name="obj">
/// The object to serialize.
/// </param>
/// <param name="type">
/// The class type of the object being passed.
/// </param>
/// <param name="fileName">
/// The filename where the object should be saved to.
/// </param>
/// <param name="xsltPath">
/// Pass a null if not required.
/// </param>
public static void SerializeToXmlFile(object obj, Type type, string fileName, string xsltPath)
{
var ns = new XmlSerializerNamespaces();
ns.Add(String.Empty, String.Empty);
var serializer = new XmlSerializer(type);
var settings = new XmlWriterSettings {Indent = true, IndentChars = "\t"};
using (var w = XmlWriter.Create(File.Create(fileName), settings))
{
if (!String.IsNullOrEmpty(xsltPath))
{
w.WriteProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"" + xsltPath + "\"");
}
serializer.Serialize(w, obj, ns);
}
}
Спасибо, работал как шарм! –
На самом деле это ошибка в реализации конкретного класса XmlWriter. Они забыли реализовать метод Dispose(). Использование Close() явно является другим методом обхода. –
@nobugz: Это неправильное представление. Класс XmlWriter реализует интерфейс IDisposable и, таким образом, имеет метод Dispose. Он реализован явно, поэтому вам нужно использовать ссылку IDisposable для доступа к методу Dispose. Использование XmlWriter в используемом блоке будет утилизировать его правильно, а метод Dispose вызывает метод Close. – Guffa