非常奇怪的错误,基本上,一旦用户登录我的应用程序,我就会启动一个线程,该应用程序使用以下代码片段从 xml 文件加载数据:
public static T Deserialize<T>(String Path)
{
T Result = Activator.CreateInstance<T>();
try
{
if (File.Exists(Path))
{
using (FileStream fs = new FileStream(Path, FileMode.Open))
{
if (fs.Length > 0)
{
System.Xml.Serialization.XmlSerializer s = new System.Xml.Serialization.XmlSerializer(typeof(T));
Result = (T)s.Deserialize(fs);
}
fs.Close();
}
// force clean up!
GC.Collect();
}
return Result;
}
catch (Exception ex)
{
Console.WriteLine("Deserialize '{0}' : {1}", Path, ex.ToString());
return Result;
}
}
它正在加载的 XML 文件大约 3MB,如果这很重要的话。每次它在一个特定文件上失败,但有以下例外:
反序列化'C:\bin\Debug\Settings\Objects.xml':System.Threading.ThreadAbortException:线程被中止。
在 System.RuntimeMethodHandle.InvokeMethod(对象目标,对象 [] 参数,签名 sig,布尔构造函数)
在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(对象 obj,对象 [] 参数,对象 [] 参数)
在 System.Reflection.RuntimeMethodInfo.Invoke(对象 obj,BindingFlags invokeAttr,Binder binder,Object[] 参数,CultureInfo 文化)在 System.Xml.Serialization.TempAssembly.InvokeReader(XmlMapping 映射,XmlReader xmlReader,XmlDeserializationEvents 事件,字符串 encodingStyle) System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,字符串 encodingStyle,XmlDeserializationEvents 事件)在 System.Xml.Serialization.XmlSerializer.Deserialize(流流)
在 c:\Classes\XmlSerializer.cs:line 82 中的 Classes.XmlSerializer.Deserialize[T](String Path) 无法加载以前的数据!System.Threading.ThreadAbortException:线程被中止。
在 Classes.XmlSerializer.Deserialize[T](String Path) in c:\Classes\XmlSerializer.cs:line 96 at Controllers.ObjectDataCollection.ObjectThread.LoadData() in c:\Controllers\ObjectDataCollection.cs:line 74
对于如何进一步调试,我完全不知所措。我知道线程没有被中止,因为尝试反序列化后的下一行是一个扫描事物的循环,它运行得非常好(线程没有重新启动,它只是在一个地方启动)。
有人对我如何进一步调试有任何想法吗?我在这里完全不知所措。这是所有代码: http: //pastebin.com/F30vD9KL