在编写C#时读取XML文件

时间:2012-11-13 14:49:21

标签: c#

我有一个程序可以将其进度和其他数据记录到XML文件中。我希望能够打开这个XML文件而不会阻塞编写器程序(不是.NET程序,我无法控制它),并且在读取XML时,等待处理完所有的XML,直到收到EOF。

如何在C#中实现这一目标?

请注意,有两个问题:

  1. 保持阅读流畅通,不会阻止其他进程。
  2. 知道什么时候有更多的输入,等待没有。

3 个答案:

答案 0 :(得分:3)

如果我需要这样做,我会做以下事情:

使用FileSystemWatcher在文件更改时收到通知。然后只需读取文件并根据需要解析XML。

我会沿着这条路走下去,因为当外部应用程序写入文件时很难读取流。

答案 1 :(得分:1)

我在一个名为Tailf的操作系统程序中做了类似的事情。 如果你想自己做,或者从中获取所有代码,只需检查一下代码,它也应该对你有用,这也是我关心文本文件的一部分。

答案 2 :(得分:1)

您可以通过传递以下标志来打开文件流而不锁定它:

new FileStream(logFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

就等待“EOF”而言,如果其他程序只是间歇性地写入数据,则可能需要在进度中加入某种启发式方法(即,只有在没有新内容的情况下才停止查找新数据< em> X 分钟。)