我使用的序列化需要的对象的代码(使用DataContractSerialier)序列化错误期间保存文件使用DataContractSerialize
try { using (var stream = File.OpenWrite(filePath)) { var dcs = new DataContractSerializer(typeof(T)); dcs.WriteObject(stream, obj); } } catch (Exception ex) { throw new Exception("Error during write object to xml file", ex); }
我不理解,但有时这种方法附加到结束的XML文件中的一些额外的符号。例如:“eInfo>”(当我删除'eInfo>'反序列化很好)。我在做高负载测试时发现了这个问题(不停地调用这个方法12000次)。也许我可以检查该文件是否正确保存(尝试反序列化保存的文件),但我认为这是一个坏主意,因为我们需要在保存xml文件时随时运行反序列化过程。
当你在不停止的情况下调用12000次方法时,他们是不是都在写同一个文件?编辑:您的本地系统上或网络共享上的文件? –
不,任何时候我用新的文件名将文件保存到我的本地硬盘驱动器。 –
只需添加,如果是同一个文件,'File.OpenWrite'将会覆盖文件中的characters_,不会先清除文件。这意味着,如果您的上一次写入(序列化)比先前的写入更短_shorter_,则会留下字符。请阅读MSDN页面上的注释:http://msdn.microsoft.com/en-us/library/system.io.file.openwrite%28v=vs.110%29.aspx –