powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / c# загрузка данных в DataTable в параллельном режиме
2 сообщений из 2, страница 1 из 1
c# загрузка данных в DataTable в параллельном режиме
    #37606894
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет,


Требуется загружать данные в переменную типа DataTable в параллельном режиме.

1. Есть массив строк.
2. Есть функция которая парсит строку
3. Необходимо чтобы результат парсинга строки записывался в DataTable

Переманая table объявлена как глобальная.

Скрипт добавляет строки в таблицу, но периодически вылетает или зависает.
Вылетает с ошибкой, что структура таблицы повреждена.

Если грузить данные в режима дебага то все работает.

Кто может подсказать, что не так?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
    class ImportRecordClass
    {
        public Int32 classIndex;
        public String classData;
    }



                    while ((ReadString[ReadStringCount] = sr.ReadLine()) != null)
                    {

                        tasks[ReadStringCount] = new Task((obj) => 
                                                 {
                                                     ImportRecordClass ImportRecord = (ImportRecordClass)obj;
                                                     importRecord(ref ImportRecord.classIndex, ref ImportRecord.classData);
                                                 }, 
                                                 new ImportRecordClass()
                                                 {
                                                     classIndex = ReadStringCount,
                                                     classData = ReadString[ReadStringCount]
                                                 });

                        tasks[ReadStringCount].Start();

                        if((ReadStringCount+1) % ReadBatchSize == 0)
                        {
                            Task.WaitAll(tasks);
                            ReadString = new String[ReadBatchSize];
                            ReadStringCount = 0;
                            
//                            table.Clear();
                        }

                        if ((++Records) % WriteBatchSize == 0)
                        {
                            Console.WriteLine("Records: {0} CurrentTime: {1}", Records, DateTime.Now);
                        }

                        ReadStringCount++;
                    }




        private static void importRecord(ref Int32 Index, ref String Data)
        {
            DataRow row = table.NewRow();

            String[] Columns = Data.Split('|');
            row[0] = col[0];
            row[1] = col[1];
            table.Rows.Add(row);
        }
...
Рейтинг: 0 / 0
c# загрузка данных в DataTable в параллельном режиме
    #37606956
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1,

lock(table) table.Rows.Add(row);
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / c# загрузка данных в DataTable в параллельном режиме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]