我有两个C# .NET应用程序:
- 一个应用程序(称为App1)将数据写入XML文件。
- 第二个应用程序(称之为App2)从同一XML文件中读取数据并更新自身。
App2不断监视XML文件的更改,我使用FileSystemWatcher
进行监控。
一旦App1完成对文件的写入,App2就会读取更改。
我确保App2仅以读取访问权限读取XML文件,但有时App1仍会抛出异常:
"The process cannot access the file 'C:\xmlFile' because it is being used by another process"。以下是我的App2代码片段,用于读取该文件。
这是我的代码:
using (var stream = File.Open(filePath,FileMode.Open,FileAccess.Read))
{
using (XmlReader reader = XmlReader.Create(stream))
{
while (reader.Read())
{
// Only detect start elements.
if (reader.IsStartElement())
{
switch (reader.Name)
{
case "Component":
fileElements.ComponentName = reader["Name"];
fileElements.DateRun = reader["DateRun"];
fileElements.Passed = reader["Passed"];
break;
}
}
}
if (filePath.ToLower().Contains("ebsserver"))
{
UpdateDataTable1(fileElements);
}
else if (filePath.ToLower().Contains("ebsui"))
{
UpdateDataTable2(fileElements);
}
else
{
UpdateDataTable3(fileElements);
}
}
}
我该如何解决这个问题?