XML反序列化是否阻止读取文件



我有一个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")
    }
}

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

有没有可能像我做的测试是错误的,或者我的理解不正确?

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

最新更新