Аккаунты в многопотоке

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
+ Список с временем для следующего запуска, работаю несколько лет проблем не вызывает
В случае падения сервера и прочего, делается шаблон который быстро восстановит список аккаунтов из резервной копии, запускается один раз с остановкой всех остальных
Спасибо огромное! Мне кажется, это самое простое и гениальное решение проблемы!

Единственный вопрос, как я понимаю, в этом случае программа будет работать бесконечно?

То есть, когда все аккаунты отработают она все еще будет продолжать их брать и проверять на время следующего запуска?
 
Последнее редактирование:

Azakim

Client
Регистрация
25.07.2021
Сообщения
166
Благодарностей
31
Баллы
28
Предположим нужно брать строки из списка urls ... список создан, файл со строками указан, установлены галочки брать из файла, сохранять изменения списка в файл ... и в PM созданы 2 переменные - url и label (в первую попадет взятая потоком уникальная строка, во второй метка/идентификатор этой строки, по которуму после выполнения всех действий мы цдалим эту строку из списка)

Код:
lock(SyncObjects.ListSyncer){
    for(int i=0; i<project.Lists["urls"].Count; i++){
        if ( project.Lists["urls"][i].Contains("busy") == false ){ // если никакой другой поток с этой строкой не работает
            project.Variables["url"].Value = project.Lists["urls"][i]; // кладем строку в переменную
            project.Lists["urls"].RemoveAt(i); // удаляем эту строку из списка
            project.Variables["label"].Value = Macros.TextProcessing.RandomText(7,"d",""); // генерим метку/id взятой строки
            project.Lists["urls"].Add(project.Variables["url"].Value+"|busy-"+project.Variables["label"].Value); // возвращаем уже с прибавкой busy-label
            break; // прерываем цикл т.к строку взяли
        }
    }
}
if ( project.Variables["url"].Value == "" ){
    throw new Exception("URLы закончились"); // выход по красной ветке
}
После отработки данного кубика у вас будут заполнены переменные url и label ... или же кубик будет завершен по красному выходу (в случае если свободных строк нет)

Ну и не забывайте после выполнения всех действий удалить из списка urls строку содержащую текст переменной label

UPD: предвижу вопрос - зачем нужна метка/идентификатор строки, почему бы после выпонлнения всех действий просто не удалить по взятому url ? .... потому что в списке может быть несколько одинаковых строк (ну задачи же разные могут быть) и тогда удаляться все такие строки, а у с уникальной меткой только нужная (та с которой работал этот конкретный поток)
Спасибо большое ,разобрался только с Вашим примером :cd:
 

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