我的應用程序在XML文件打開時反序列化數據。在反序列化工作正常第一次加載應用程序,但是當我嘗試重新打開該程序,我得到以下錯誤:XML重新反序列化錯誤
2/27/2014 6:27:30 PM : Error: There is an error in XML document (9, 6).. Stacktrace: at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) at XMLInterface.XMLInterface.Deserialize(String CallingSub, String LocalFileURI) in C:\AzTech\Satellite\Code Repository\trunk\Ribbon\XMLInterface\Code\XMLInterface.vb:line 66
此外,應用程序是一個附加的解決方案的一部分,這樣當應用程序關閉,加載項仍在運行。如果我關閉加載項並重新運行它,序列化工作正常;只有在我關閉並重新打開應用程序後,纔會發生錯誤。
這裏是我的代碼:
Dim ser As New XmlSerializer(ElementsLocal.GetType)
Dim objStreamReader As New StreamReader(LocalFileURI)
ElementsLocal = ser.Deserialize(objStreamReader)
objStreamReader.Close()
objStreamReader.Dispose()
ser = Nothing
GC.Collect()
有沒有人有什麼想法?我需要以某種方式發佈文件嗎?我認爲,一旦反序列化小組退出文件將被釋放,但是情況並非如此?
編輯:
For Each Name As String In System.IO.Directory.GetFiles(My.Settings.savePath)
Dim cBox As New ComboBoxItem
cBox.Content = System.IO.Path.GetFileNameWithoutExtension(Name)
cBox.Style = TryFindResource("blackComboBoxItem")
cmbBxQBDNames.Items.Add(cBox)
Next
編輯2: 該文件是由這些過程以及(不知道這是否會影響到的情況)來訪問 包裝紙的代碼,如建議,做也不行:
Dim ser As New XmlSerializer(ElementsLocal.GetType)
Using fs As FileStream = New FileStream(LocalFileURI, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
Using objStreamReader As New StreamReader(fs)
ElementsLocal = ser.Deserialize(objStreamReader)
End Using
End Using
ser = Nothing
發生整個錯誤會很有幫助,而不僅僅是堆棧跟蹤。 –
我早先放入了整個錯誤信息,但它被其他人編輯了出來。 – user
它看起來像一個堆棧跟蹤轉儲到日誌文件。我指的是整個錯誤,告訴你哪裏出了問題,哪裏(我們已經有這個部分)。 –