C# 状态EndRootElement中的标记EndElement将导致无效的XML文档

C# 状态EndRootElement中的标记EndElement将导致无效的XML文档,c#,windows-phone-7,serialization,datacontractserializer,isolatedstoragefile,C#,Windows Phone 7,Serialization,Datacontractserializer,Isolatedstoragefile,我正在为wp7开发一个应用程序。我正在使用datacontractserializer将我的应用程序的状态存储在isolatedstoragefile中。现在,当我尝试序列化对象时 有时我会遇到这个例外 状态EndRootElement中的标记EndElement将导致无效的 XML文档。确保ConformanceLevel设置设置为 ConformanceLevel.Fragment或ConformanceLevel.Auto(如果需要) 编写一个XML片段 这是我的课,我正在连载 [Data

我正在为wp7开发一个应用程序。我正在使用datacontractserializer将我的应用程序的状态存储在isolatedstoragefile中。现在,当我尝试序列化对象时 有时我会遇到这个例外

状态EndRootElement中的标记EndElement将导致无效的 XML文档。确保ConformanceLevel设置设置为 ConformanceLevel.Fragment或ConformanceLevel.Auto(如果需要) 编写一个XML片段

这是我的课,我正在连载

[DataContract]
public class TcpSessionProperties
{
  [DataMember]
    public int NumberOfReceivedStanzas { get { return _numberOfReceivedStanzas; } set { _numberOfReceivedStanzas = value; } }

    [DataMember]
    public int NumberOfPacketsSent { get { return _numberOfPacketsSent; } set { _numberOfPacketsSent = value; } }


    [DataMember]
    public List<TcpPacket> PendingPacketsToSendQueue
    {
        get { return _pendinPacketsToSendQueue; }
        set
        {
            LogUtility.Log(Thread.CurrentThread.GetHashCode());
            _pendinPacketsToSendQueue = value;
        }
    }

}

cla
public class AppCacheIsolatedFile
{
    public static void Add(object val)
    {
      private static object _objectToSave;

        lock (_storageLock)
        {
            /*
            if (PhoneApplicationService.Current.State.ContainsKey(key))
                PhoneApplicationService.Current.State[key] = val;
            else
                PhoneApplicationService.Current.State.Add(key, val);
             */
            _objectToSave = val;
            WriteObject(NameOfFile, val, typeof(StreamingSocketConnection.StreamingSocketConnection));
        }
         public static void WriteObject(string fileName,object val,Type type)
    {
        try
        {
            Console.WriteLine(
            "Creating a Person object and serializing it.");

            using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileName, FileMode.Create, IsoStore))
            {
                DataContractSerializer dcs = new DataContractSerializer(type);
                dcs.WriteObject(stream, val);
            }
        }
        catch (Exception exception)
        {

            LogUtility.NotifyUserAndLog("Exception occured in isolatd storage file  while writing "+exception.StackTrace); 
        }


    }


    }

该异常发生在dcs.writeobject。我不知道为什么会发生这种事。

这似乎真的很奇怪。改为尝试向a写入,看看是否会出现相同的错误。如果是这样的话,请查看写入流的内容。@MarkusJarderot我使用IsolatedStorageTool检查了它。我发现它正在生成的xml文件中包含了一些xml,还有一些应该在其中的xml。我能想到的唯一一件事是涉及到多个线程,并且它们稍微不同步。一个完成并写入结束标记,但另一个还没有完成。@MarkusJarderot,但我在写入之前已经锁定了它。只是猜测;我不知道。您将不得不对它进行更多的调试,试图捕获何时写入结束元素。