我有一个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,而不是测试它
是否有可能测试我做错了或我的理解不正确?
答案 0 :(得分:1)
new StreamReader(string)
使用FileAccess.Read
和FileShare.Read
- 它不会阻止其他读者。如果您想要不同的控制:直接使用FileStream
来控制访问/共享。