c# - 多线程读取xml文件

标签 c# multithreading xmltextreader xml

我搜索了很多,但找不到适合我的问题的解决方案。我写了一个包含电视节目所有剧集信息的 xml 文件。它有 38 kb,包含大约 680 个变量的属性和字符串。起初我只是在 XMLTextReader 的帮助下阅读它,它在我的四核上运行良好。但是我妻子用了 5 年的笔记本电脑花了大约 30 秒才读完。所以我考虑了多线程,但我得到了一个异常,因为文件已经打开。

线程开始是这样的

while (reader.Read())
{
   ...
   else if (reader.NodeType == XmlNodeType.Element)
   {
       if (reader.Name.Equals("Season1"))
       {
           current.seasonNr = 0;
           current.currentSeason = season[0];
           current.reader = reader;
           seasonThread[0].Start(current);
       }
       else if (reader.Name.Equals("Season2"))
       {
           current.seasonNr = 1;
           current.currentSeason = season[1];
           current.reader = reader;
           seasonThread[1].Start(current);
       }

还有这样的解析方式

reader.Read();

for (episodeNr = 0; episodeNr < tmp.currentSeason.episode.Length; episodeNr++)
{
    reader.MoveToFirstAttribute();
    tmp.currentSeason.episode[episodeNr].id = reader.ReadContentAsInt();
    ...
}

但它不起作用......

我通过了阅读器,因为我希望“光标”位于正确的位置。但我也不知道这是否可行。

请帮忙!

编辑: 伙计们,我在哪里写过关于 IE 的文章?我写的程序解析文件。我在我的个人电脑和笔记本电脑上运行它。完全没有 IE。

编辑 2: 我做了一些秒表研究,发现解析 xml 文件在我的 PC 上只需要大约 200 毫秒,在我妻子的笔记本电脑上只需要 800 毫秒。 WPF 这么慢吗?我能做什么?

最佳答案

我同意大多数人的意见。读取一个 38Kb 的文件应该不会花这么长时间。您的机器上是否正在运行其他可能会干扰处理的东西,防病毒软件等?

创建线程所花费的时间将远远大于读取文件所花费的时间。如果您可以发布用于读取文件和文件本身的实际代码,它可能有助于分析性能瓶颈。

关于c# - 多线程读取xml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479702/

相关文章:

java - 在Java中使用Netty发送连续数据的最佳方式

wpf - 使用 Task 与 Dispatcher 进行 ui 线程操作

java - 线程安全写入同一文件

c# - 使用 XmlTextReader

c# - Sound.readData 和 Sound.lock 在 FMOD 上的区别?

c# - Linq 更新并合并两个结果集(来自数据表)

c# - 如何将 xml 字符串读入 XMLTextReader 类型

c# - XmlTextReader 在不识别的情况下传递了 XML 文档的末尾

c# - ResourceManager 没有选择正确的 resx 文件

c# - .NET 中的错误和异常有什么区别?