MultipleThreadsReadfromSameFile我有一个xml文件,需要多次读取。我正在尝试使用Parallel.ForEach来加快该过程,因为相对于读取顺序没有读取数据。数据仅用于填充对象。我的问题是,即使每次我在线程中以只读方式打开文件时,它都会抱怨它是由另一个程序打开的。(我没有在文本编辑器或任何东西中打开它:))如何从同一个文件中完成多次读取?编辑:该文件约为18KB。它阅读了大约1800次。谢谢如果您希望多个线程从同一文件读取,则需要指定FileShare.Read:using(varstream=File.Open("theFile.xml",FileMode.Open,FileAccess.Read,FileShare.Read)){...}但是,由于多种原因,您无法实现任何加速:您的硬盘驱动器一次只能读取一件事。尽管您有多个线程同时运行,但这些线程最终都会相互等待。您无法轻松地解析XML文件的各个部分。您通常每次都必须解析整个XML文件。由于您一直有多个线程读取它,因此您似乎不希望文件发生更改。如果是这样,那你为什么要多读几遍呢?根据文件的大小和您正在执行的读取类型,首先将文件加载到内存中然后直接访问线程可能会更快。您没有提供有关文件、读取等的任何详细信息,因此我无法确定它是否能满足您的特定需求。一般前提是在单个线程中加载一次文件,然后直接(通过Xml结构)或间接(通过XmlNodes等)为每个线程提供对文件的访问。我想象这样的事情:加载文件对于每个Xpath查询,将匹配的节点分派到您的线程。如果线程不直接修改XML,这可能是一个可行的替代方案。打开文件时,需要指定FileShare.Read:using(varstream=newFileStream("theFile.xml",FileMode.Open,FileAccess.Read,FileShare.Read)){...}这样可以打开文件多次读取以上为C#学习教程:多个线程从同一个文件中读取所有共享内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
