2010-09-17 28 views
-2

我使用DataGrid显示一个xml文件。网格的数据源是一个DataSet(使用模式)
快速清理DataSet - 读取xml文件(C#)

  Assembly assembly = Assembly.GetExecutingAssembly(); 
      Stream stream = assembly.GetManifestResourceStream("XML_Reader.Resources.schema.xsd"); 
      XmlSchemaSet schemas = new XmlSchemaSet(); 
      XmlReaderSettings settings = new XmlReaderSettings(); 
      settings.ValidationType = ValidationType.Schema; 
      settings.Schemas.Add(null, XmlReader.Create(stream)); 
      using (XmlReader reader = XmlReader.Create(xmlFile, settings)) 
      { 
       newDataSet.ReadXml(reader); 
      } 
      dataGrid.DataSource = newDataSet; 


但读一个新的XML文件时,我需要清除的数据集。(newDataSet.Clear();
因为我看过 '大'(40 MB)的XML文件,清除DataSet非常慢。

我如何加快此清算?
读取文件也很慢!

上一篇:Intel i7 950,8 Gb,Win7 64位。

+0

你的意思是DataSet.Clea * r *而不是DataSet.Clea * n *? – 2010-09-17 08:11:13

+0

@Daniel Renshaw:你是对的! – 2010-09-17 08:16:14

回答

-1

让我回答我的问题;-))

类型化的DataSet简直可以实例像任何其他类的类。
工具生成的任何东西都没有什么魔力,这些工具只是简单地生成类,并且可以像使用其他类一样使用这些类。

NewDataSet d1 = new NewDataSet();你在那里放置正确的类名而不是“NewDataSet”。

+0

-1:首先,这个答案与你为另一个你自己的问题给出了完全相同的答案! http://stackoverflow.com/questions/3740486/create-new-typed-dataset-object-c/3744898#3744898第二,你如何解决这个答案的速度问题?至少组成一些*新的* BS! – JohnB 2010-09-20 22:36:24

+0

@JohnB:问题是相关的。他们建议我为每个文件使用一个新的DataSet对象,并避免使用'DataSet.Clear();'。所以最终的问题是如何创建一个新的类型化数据集。那时我没有得到答案,但想分享解决方案。第二,我没有解决速度问题(这不仅仅是一个问题而是一个评论) – 2010-09-21 05:42:52

1

为什么你不能创建新的数据集并使用它而不是清除旧数据集?旧的将被.NET收集垃圾。

0

我建议你为每个文件使用一个新的DataSet对象,并避免一起使用DataSet.Clear()。只需将旧数据集留给垃圾收集器清理即可。

+0

我如何创建一个新的Typed DataSet? – 2010-09-17 08:39:09

+0

我需要正确的数据类型来对列进行排序! – 2010-09-17 09:01:29

+0

你从哪里得到'newDataSet'?如果您自己启动并分配了XSD,只需为每个文件重复该过程即可。如果您使用设计时拖放方式,仍然可以达到相同的效果,但这有点困难。 – 2010-09-17 09:23:59