2010-09-17 3 views
-2

Я использую DataGrid для отображения XML-файла. DataSource Сетка представляет собой набор данных. (С использованием схемы)
Быстрая очистка 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, мне нужно, чтобы очистить DataSet. (newDataSet.Clear();)
Поскольку я прочитал 'большой' (40 Mb) XML файлы, очистка DataSet происходит очень медленно.

Как я могу ускорить эту очистку?
Чтение файла также медленно!

На: Intel i7 950, 8 Gb, Win7 64-бит.

+0

Вы имеете в виду DataSet.Clea * r * вместо DataSet.Clea * n *? –

+0

@ Даниэль Реншоу: Ты прав! –

ответ

-1

Позвольте мне ответить на мой собственный вопрос ;-))

Типизированную DataSet это просто класс, который вы можете создать экземпляр, как и любой другой класс.
Нет ничего магического в том, что генерируется инструментами, эти инструменты просто генерируют классы, и вы можете использовать эти классы так же, как вы используете другие классы.

Сделайте NewDataSet d1 = new NewDataSet();, где вместо «NewDataSet» вы помещаете нужное имя класса.

+0

-1: В первую очередь, этот ответ - тот же самый ответ, который вы дали для другого своего вопроса! http://stackoverflow.com/questions/3740486/create-new-typed-dataset-object-c/3744898#3744898 2nd, как вы решаете проблему с этим ответом? По крайней мере, составьте * новый * BS! – JohnB

+0

@JohnB: Вопрос связан. Они предлагают мне использовать новый объект DataSet для каждого файла и не использовать 'DataSet.Clear();'. Поэтому в результате возник вопрос о том, как создать новый типизированный DataSet. В этот момент я не получил ответа здесь, но хотел поделиться решением. Во-вторых, я не занимался проблемой скорости (это был скорее комментарий, чем вопрос) –

1

Почему вы не можете просто создать новый набор данных и использовать это вместо очистки старого? Старое будет мусором, собранным .NET.

0

Я предлагаю вам использовать новый объект DataSet для каждого файла и вообще не использовать DataSet.Clear(). Просто оставьте старые наборы данных, которые будут очищены сборщиком мусора.

+0

Как создать новый типизированный DataSet? –

+0

Мне нужен правильный тип данных для сортировки столбцов! –

+0

Откуда вы взяли 'newDataSet' с самого начала? Если вы новичок и назначили XSD самостоятельно, просто повторите процесс для каждого файла. Если вы используете подход drag-and-drop, ориентированный на дизайн, вы все равно можете добиться такого же эффекта, но это немного сложнее. –

Смежные вопросы