Vb.Net异步XML写作?

时间:2015-12-16 15:57:29

标签: xml vb.net asynchronous io

我有一个子程序,它检查XML文件是否有重复项,并替换它们或写一个新文件。

粗略的例子:

  Dim doc As New XmlDocument()
        doc.Load("xmlfile.xml")
 Dim node As XmlNode = doc.CreateNode(XmlNodeType.Element, "Listing", "")

   Dim MatchNamenode As XmlNode = doc.CreateElement("ListName") 'set a node
        MatchNamenode.InnerText = NewMatchName 'give it a value
        node.AppendChild(MatchNamenode) 'stick it in a parent

 doc.DocumentElement.AppendChild(node)
        doc.Save("xmlfile.xml")

工作得很好。但是,如果我是多线程并使这个例程Async将导致某种I / O访问问题?

不同的线程将传递唯一信息,因此结果重叠没有问题。但是,如果一个线程正在保存XML文件可能会阻止其他人访问它吗?

1 个答案:

答案 0 :(得分:0)

如果你想多线程处理,那么是的,你可以从一个线程保存文件锁并阻止访问。

您有几个选择:

  1. 将数据读入内存并对内存信息进行操作,然后使用单个线程执行保存。
  2. 将要使用的文件批量分组到不同的集合中,并将每个集合交给任务。您将确保没有批处理包含与另一批处理相同的文件的引用。