我一直在創建多個後臺線程來解析XML文件並重新創建新的XML文件。現在我遇到的問題是,即使我在全局變量上使用synclock,我仍然有時會出錯,我相信這只是我正在編碼的粗略方式,但我想知道是否有人更好選項。 程序流程=線程還沒有掌握..仍然有ioexception錯誤
- 訪問本地文件夾,並上傳所有文件到列表
- 條每個文件轉換成XML條目,並把這些條目到一個ArrayList
- 爲特定值解析和這些值輸入到數據庫表
- 現在創建一個線程,並採取條目的ArrayList和線程將重新分析
- 線程解析,並創建一個新的XML文件
- 主線程繼續用諾特爾功能,然後進入並從列表
一個文件,我將添加一些代碼來顯示問題區域,但如果我在使用聲明的全局變量做不同的線程覆蓋在變量造成污染該值。
For Each g In resultsList
gXmlList.Add(g)
Next
Dim bgw As New BackgroundWorker
bgw.WorkerSupportsCancellation = True
AddHandler bgw.DoWork, New DoWorkEventHandler(AddressOf createXML)
AddHandler bgw.RunWorkerCompleted, AddressOf WorkComplete
threadlist.Add(bgw)
bgw.RunWorkerAsync()
Private Sub createXML()
num += 1
Dim file As String = Module1.infile
xmlfile = directoryPath & "\New" & dateTime.Now.ToUniversalTime.ToString("yyyyMMddhhmmss") & endExtension
Thread.Sleep(2000)
Dim doc As XmlDocument = New XmlDocument
**xwriter = New XmlTextWriter(xmlfile, Encoding.UTF8)** this is where ioexception error
xwriter.Formatting = Formatting.Indented
xwriter.Indentation = 2
xwriter.WriteStartDocument(True)
xwriter.WriteStartElement("Posts")
我有全局變量通過應用程序,我應該鎖定每一個,這樣做不使用線程,然後沒用。
Dim j As Integer = 0
不是你問題的原因,但不要使用`New XmlTextWriter`。改爲使用`XmlWriter.Create`。從.NET 2.0開始,新的XmlTextWriter已被棄用。 – 2011-02-13 00:26:42