- Регистрация
- 23.12.2015
- Сообщения
- 71
- Благодарностей
- 13
- Баллы
- 8
Привет, друзья!
У меня логика такая - бери из input.txt первую строку с удалением.
Запиши в конец output.xlsx строки которые напарсил.
Все вроде просто, но когда я увеличиваю количество потоков вот так

То вместо того чтобы добавлять данные в output.xlsx каждый поток перезаписывает данные поверх, начиная первой строки.
Не могу понять что я делаю не так.
Код который трогает Output.xlsx только один и выполняется один раз в конце работы каждого потока.
Он следующий (внимание - шапка кода содержит тоже информацию):
Я вроде все залочил, но в лог выводится отладочная информация о том что все равно не все потоки правильно посчитали количество строк в таблице Output.

У меня логика такая - бери из input.txt первую строку с удалением.
Запиши в конец output.xlsx строки которые напарсил.
Все вроде просто, но когда я увеличиваю количество потоков вот так

То вместо того чтобы добавлять данные в output.xlsx каждый поток перезаписывает данные поверх, начиная первой строки.
Не могу понять что я делаю не так.
Код который трогает Output.xlsx только один и выполняется один раз в конце работы каждого потока.
Он следующий (внимание - шапка кода содержит тоже информацию):
Копируем из таблицы preOut(не привязана к файлу) в Output (привязана):
// Берем таблицы
var preTable = project.Tables["preOut"];
var outTable = project.Tables["Output"];
// Лочим код изменения таблицы, чтобы потоки не мешали друг другу
lock (SyncObjects.TableSyncer)
{
int y = outTable.RowCount;
project.SendWarningToLog(y.ToString(), "Пишем в output начиная с:", true);
for (int i = 0; i < preTable.RowCount; i++)
{
outTable.AddRow(preTable.GetRow(i).ToArray());
}
// preTable.Clear(); // Очищаем preOut после копирования
}

Последнее редактирование: