在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写作时的任务?
因为提供的代码,我真的不明白这种行为。
谢谢!