StreamWriter跳过要在foreach循环中序列化的项目

时间:2015-10-01 15:22:03

标签: c# streamwriter

在foreach循环中序列化大量对象时,我遇到了StreamWriter问题。这是我的代码:

 public bool Export(ItemToSerialize it){
   try{
     using(StreamWriter sw = new StreamWriter(Path.Combine(MySettings.ExportPath, randomFileName + ".xml"))){
       XmlSerializer ser = new XmlSerializer(typeof(ItemToSerialize));    
       ser.Serialize(sw,it);
      }
      return true;
    } 
    catch{throw;}
 } 

public bool ExportAll(){
  List<ItemToSerialize> lst = RetrieveListToSerialize();
  foreach(ItemToSerialize it in lst){
    Export(it);
  }
}

当我要导出大量数据时,它会跳过大部分数据。起初,我虽然必须刷新写入器但是在导出完成时刷新/关闭并不会改变任何东西。

令人惊讶的是,当我添加睡眠(System.Threading.Thread.Sleep(1000))时,它可以正常工作。最令人惊讶的是,当我在500毫秒时消除睡眠时,它不断跳过其中的一些。

我怀疑它的写作速度比作者可以打开/关闭或简单写入的速度快。但是,我希望导出函数在文件完全写入之前不会返回。是否有像背景&#39;使用StreamWriter写作时的任务?

因为提供的代码,我真的不明白这种行为。

谢谢!

0 个答案:

没有答案