Быстрая очистка DataSet - чтение XML-файлов (C #) - PullRequest
0 голосов
/ 17 сентября 2010

Я использую DataGrid для отображения XML-файла.Источником данных Grid является DataSet. (Используя схему)

            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 Мб) XML-файлы, очистка DataSet идет очень медленно.

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

На: Intel i7 950, 8 Гб, Win7 64-разрядная.

Ответы [ 3 ]

1 голос
/ 17 сентября 2010

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

0 голосов
/ 19 сентября 2010

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

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

Выполните NewDataSet d1 = new NewDataSet(); там, где вы указали правильное имя класса вместо "NewDataSet".

0 голосов
/ 17 сентября 2010

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

...