【问题标题】:Vb.Net Async XML Writing?Vb.Net 异步 XML 写作?
【发布时间】:2015-12-16 15:57:29
【问题描述】:

我有一个子例程,它检查 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")

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

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

【问题讨论】:

    标签: xml vb.net asynchronous io


    【解决方案1】:

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

    你有几个选择:

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

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多