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

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

Спасибо огромное! Мне кажется, это самое простое и гениальное решение проблемы!

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

То есть, когда все аккаунты отработают она все еще будет продолжать их брать и проверять на время следующего запуска?
 
Последнее редактирование:
Предположим нужно брать строки из списка 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:
 

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