我的应用程序在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
它看起来像一个堆栈跟踪转储到日志文件。我指的是整个错误,告诉你哪里出了问题,哪里(我们已经有这个部分)。 –