Как сделать добавление в таблицу по очереди

Sanya330

Client
Регистрация
16.08.2020
Сообщения
302
Благодарностей
69
Баллы
28
Доброго времени суток,
Есть список с данными аккаунтов
1. log:pass
2. log1:pass1
3. log2:pass2

Возможно ли сделать так, чтобы после обработки аккаунтов в многопотоке проект записывал данные в таблицу поочерёдно так, как это было в списке?
Т.е.
1. log:pass - data - num
2. log1:pass1 - data - num
3. log2:pass2 - data - num

Потоки работают разное количество времени и сейчас это выходит, к примеру, так:
3. log2:pass2 - data - num
1. log:pass - data - num
2. log1:pass1 - data - num

Буду благодарен за помощь!
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 418
Благодарностей
5 454
Баллы
113
Возможно ли сделать так, чтобы после обработки аккаунтов в многопотоке проект записывал данные в таблицу поочерёдно так, как это было в списке?
А как он поймет верную очередность? в таблице остаются какие-то данные к которым можно было бы зацепится?

Как вариант брать и сразу записывать в конец таблицы (в локе).
 
  • Спасибо
Реакции: Sanya330

Sanya330

Client
Регистрация
16.08.2020
Сообщения
302
Благодарностей
69
Баллы
28
А как он поймет верную очередность? в таблице остаются какие-то данные к которым можно было бы зацепится?

Как вариант брать и сразу записывать в конец таблицы (в локе).
При записи данных в конец таблицы, можно как-то получить номер стоки в которую он записал?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 418
Благодарностей
5 454
Баллы
113
При записи данных в конец таблицы, можно как-то получить номер стоки в которую он записал?
Можно перевести столбец в список и поиском найти номер строки. Но есть вероятность что другой поток уже произведет работу с таблицей.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 418
Благодарностей
5 454
Баллы
113
Не знаю разберешься или нет. Дернул код из проекта, по идее тут 90% того что тебе надо есть. Просто подшаманить немного код.

Суть в следующем в переменной status находится значение которое мы ищем в таблице. Когда его находит, то уже делай что хочешь в скобках которые начинаются с 7 строки. В качестве примера оставил несколько строк записи и чтения.

C#:
var textContains = project.Variables["status"].Value; // Что ищем
var table = project.Tables["ОТЗОВИК"]; // Таблица с которой работаем
lock (SyncObjects.TableSyncer) {
for(int i=0; i < table.RowCount; i++) {
    var cells = table.GetRow(i).ToArray();
    if (Array.Exists(cells, el => el.Contains(textContains))) {
        project.Variables["Login_pass"].Value = table.GetCell("D", i); //читаем строку + назначаем в переменную проекта
        var Login_pass = table.GetCell("D", i); // читаем строку и назначаем в переменную кода
        var Login = System.Text.RegularExpressions.Regex.Match(Login_pass, @".*(?=:\d{9})").Value; //парсим логин для оповещения в переменную кода
        project.Variables["URL_avito_ad"].Value = table.GetCell("E", i); // берем из таблицы в переменную
        table.SetCell("C", i, "В работе"); //Записываем в таблицу
      
        // для лога
        project.Variables["TBL_COUNT2"].Value = i.ToString();
        project.SendWarningToLog("", "Взяли строку ["+i+"] с таблицы | ["+Login+"]", true); //оповещение
        return "Значение найдено " + i; 
    }
}
project.SendWarningToLog("", "Не нашли строку "+textContains, true);
return "Ничего не нашли";
}
 
  • Спасибо
Реакции: Sanya330

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 432
Благодарностей
9 128
Баллы
113
  • Спасибо
Реакции: Mikhail B.

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 432
Благодарностей
9 128
Баллы
113
Возможно ли сделать так, чтобы после обработки аккаунтов в многопотоке проект записывал данные в таблицу поочерёдно так, как это было в списке?
При подготовке списка с аккаунтами, можно например записывать номер строки, который потом ляжет в таблицу в отдельную колонку. Потом, уже сортировать Таблицу (Операции над таблицей - Сортировать) по этой колонке, по возрастанию.

Например так:

1;log1;pass1
2;log2;pass3
3;log3;pass3
и т.д..
 
  • Спасибо
Реакции: nicanil и Sanya330

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 418
Благодарностей
5 454
Баллы
113
Еще вариант сделать по принципу БД. т.е. добавить строку которая будет отвечать за то, есть акк в работе или нет.

Просто ставится 0 - если акк свободен и 1 - если акк в работе. В локе берется в работу и сразу ставит статус, что исключит использования аккаунта другими потоками.
 
  • Спасибо
Реакции: Sanya330

Sanya330

Client
Регистрация
16.08.2020
Сообщения
302
Благодарностей
69
Баллы
28
При подготовке списка с аккаунтами, можно например записывать номер строки, который потом ляжет в таблицу в отдельную колонку. Потом, уже сортировать Таблицу (Операции над таблицей - Сортировать) по этой колонке, по возрастанию.

Например так:

1;log1;pass1
2;log2;pass3
3;log3;pass3
и т.д..
Всем спасибо за ответы, пока что воспользуюсь данным вариантом)
 
  • Спасибо
Реакции: Sergodjan и Mikhail B.

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)