我有一个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.Read
和FileShare.Read
-不会阻止其他读卡器。如果您想要不同的控制:直接使用FileStream
来控制访问/共享。