1

非常奇怪的错误,基本上,一旦用户登录我的应用程序,我就会启动一个线程,该应用程序使用以下代码片段从 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

4

0 回答 0