Dab*_*rnl 6 .net idisposable xml-serialization
using (var file_stream = File.Create("users.xml"))
{
var serializer = new XmlSerializer(typeof(PasswordManager));
serializer.Serialize(file_stream, this);
file_stream.Close();
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码非常有效.但是,当我把它缩短为:
var serializer = new XmlSerializer(typeof(PasswordManager));
serializer.Serialize(File.Create("users.xml"), this);
Run Code Online (Sandbox Code Playgroud)
当我尝试在同一测试中反序列化users.xml文件时,我得到以下异常:进程无法访问文件'users.xml',因为它正由另一个进程使用.
原因似乎是File.Create方法返回一个打开的FileStream,我无法关闭,因为我没有保留它的引用.
我的坏,还是微软的?;-)
Dar*_*rov 11
问题是,在第二个示例中,您打开了一个永远不会丢弃的文件句柄,因此第二次调用方法时,它将抛出您描述的异常.第一个片段是更好的方式(你可以删除file_stream.Close()位 - 它将由Stream.Dispose()自动调用).
| 归档时间: |
|
| 查看次数: |
4276 次 |
| 最近记录: |