2010-09-17 61 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