XML反序列化是否锁定文件不读?

时间:2015-02-27 09:09:19

标签: c#

我有一个xml文件,供多个进程用于读取。以下是用于反序列化xml的代码段。我想确保下面的代码没有读取锁定文件。

public Address TestReadLock(string myXmlFile)
{
    using (StreamReader sr = new StreamReader(myXmlFile))
    {
        XmlReaderSettings xrs = new XmlReaderSettings();
        xrs.ValidationType = ValidationType.None;
        xrs.XmlResolver = null;
        using (XmlReader reader = XmlReader.Create(sr, xrs))
        {
            return (Address)xmlSerializer.Deserialize(reader);
        }
    }
}

我尝试通过创建一个上面的函数dll并通过powershell和VS在循环中加载文件,同时它工作正常。

public void Main()
{
    for (int i = 0; i < 1000; i++)
    {
        Address myaddress = TestReadLock(@C:\MyDetails.xml")
    }
}

根据我的理解,上面的代码应该读取锁定文件nad,而不是测试它

是否有可能测试我做错了或我的理解不正确?

1 个答案:

答案 0 :(得分:1)

new StreamReader(string)使用FileAccess.ReadFileShare.Read - 它不会阻止其他读者。如果您想要不同的控制:直接使用FileStream来控制访问/共享。

相关问题