非常奇怪的错误,基本上我会在用户登录我的应用程序后触发一个线程,该应用程序使用此代码片段从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:正在中止线程。
at System.RuntimeMethodHandle.InvokeMethod(Object target,Object [] arguments,Signature sig,Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,Object []参数,Object []参数)
在System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr,Binder binder,Object []参数, 文化信息文化) at System.Xml.Serialization.TempAssembly.InvokeReader(XmlMapping mapping,XmlReader xmlReader,XmlDeserializationEvents事件,String 的encodingStyle) 在System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle,XmlDeserializationEvents事件) 在System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream)
在Classes.XmlSerializer.Deserialize [T](String Path)中 c:\ Classes \ XmlSerializer.cs:第82行无法加载以前的数据! System.Threading.ThreadAbortException:正在中止线程。
在Classes.XmlSerializer.Deserialize [T](String Path)中 c:\ Classes \ XmlSerializer.cs:第96行 在C:\ Controllers \ ObjectDataCollection.cs中的Controllers.ObjectDataCollection.ObjectThread.LoadData():第74行
我完全失去了如何进一步调试这个问题。我知道线程没有被中止,因为尝试反序列化之后的下一行是一个扫描事物的循环,它运行得非常好(线程没有重新启动,它只在一个地方启动)。 / p>
有没有人对如何进一步调试这一点有任何想法?我在这里完全失败了。以下是所有代码:http://pastebin.com/F30vD9KL