Управление шаблоном c#

Konrod_m

Client
Регистрация
18.09.2014
Сообщения
1 309
Благодарностей
684
Баллы
113

Alexmd

Client
Регистрация
10.12.2018
Сообщения
917
Благодарностей
1 155
Баллы
93
C#:
ZennoPoster.TasksList.ToList().ForEach(x=>project.Lists["список всех проектов в зенке"].Add(Regex.Match(x,@"(?<=<Name>).*?(?=</Name>)").Value));
 

radv

Client
Регистрация
11.05.2015
Сообщения
2 918
Благодарностей
1 509
Баллы
113
Друзья подскажите в чем может быть проблема?

Запускаю проект в многопотоке, все норм запускается и проходит 1 цикл, но на втором проходе начинаются проблемы.

Если проект запустить например 5 выполнений в 5 потоков (т.е. 1 выполнение в 5 потоков) то все норм отработает, и если после завершения еще раз так же запустить, то норм отработает.

А вот если поставить например 10/15/100 выполнений и 5 потоков, то первый цикл из 5 потоков пройдет норм, а при повторе начнутся сбои.

Как можно избавиться от такой проблемы или можно как то автоматизировать повторный запуск после завершения выполнения.
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 068
Благодарностей
724
Баллы
113
У меня шаб сначала работал по кругу, и мне приходилось прерывать шаблон. А теперь сделал, после завершения отрабатывает этот кубик.
C#:
var id = Guid.Parse(project.TaskId);
ZennoPoster.SetTries(id, 5);
А после этого, отрабатывает еще один кубик
C#:
var id = Guid.Parse(project.TaskId);
ZennoPoster.AddTries(id, 1);
 
  • Спасибо
Реакции: radv

radv

Client
Регистрация
11.05.2015
Сообщения
2 918
Благодарностей
1 509
Баллы
113
У меня шаб сначала работал по кругу, и мне приходилось прерывать шаблон. А теперь сделал, после завершения отрабатывает этот кубик.
C#:
var id = Guid.Parse(project.TaskId);
ZennoPoster.SetTries(id, 5);
А после этого, отрабатывает еще один кубик
C#:
var id = Guid.Parse(project.TaskId);
ZennoPoster.AddTries(id, 1);
Добавить в конец 2 кубика и поставить выполнять 5 раз и 5 потоков?

А если в 1 кубик все добавить?
 

Phoenix78

Client
Регистрация
06.11.2018
Сообщения
10 749
Благодарностей
5 128
Баллы
113
Друзья подскажите в чем может быть проблема?

Запускаю проект в многопотоке, все норм запускается и проходит 1 цикл, но на втором проходе начинаются проблемы.

Если проект запустить например 5 выполнений в 5 потоков (т.е. 1 выполнение в 5 потоков) то все норм отработает, и если после завершения еще раз так же запустить, то норм отработает.

А вот если поставить например 10/15/100 выполнений и 5 потоков, то первый цикл из 5 потоков пройдет норм, а при повторе начнутся сбои.

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

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 068
Благодарностей
724
Баллы
113
Добавить в конец 2 кубика и поставить выполнять 5 раз и 5 потоков?

А если в 1 кубик все добавить?
Я не пробовал, в один кубик, да и в сишарпе не понимаю.
Первый кубик устанавливает 5 раз выполнения, можно и 2 вместо 5 установить, второй кубик добавляет +1 выполнение.
Шаблон заканчивается, и запускается еще одно выполнение, и так всегда будет
 
  • Спасибо
Реакции: radv

radv

Client
Регистрация
11.05.2015
Сообщения
2 918
Благодарностей
1 509
Баллы
113
что значит на втором проходе ? шаблон закончил работу, вышел и запускается заного ?
Да. когда на второй цикл/проход идет после завершения. Может счетчик потоко неверно обрабатывает у меня, может потоки не завершились до конца и запускаются новые. А сбои думаю как раз из-за счетчика или нового потока идут. т.е. в мой код передает значение глобальной переменной.
 

radv

Client
Регистрация
11.05.2015
Сообщения
2 918
Благодарностей
1 509
Баллы
113
Я не пробовал, в один кубик, да и в сишарпе не понимаю.
Первый кубик устанавливает 5 потоков, можно и 2 вместо 5 установить, второй кубик добавляет +1 выполнение.
Шаблон заканчивается, и запускается еще одно выполнение, и так всегда будет
ну впринципе идея хорошая. может сработать. Попробую. Главное чтобы с нуля пробовал запустить, как при первом запуске.
 

Phoenix78

Client
Регистрация
06.11.2018
Сообщения
10 749
Благодарностей
5 128
Баллы
113
Да. когда на второй цикл/проход идет после завершения. Может счетчик потоко неверно обрабатывает у меня, может потоки не завершились до конца и запускаются новые. А сбои думаю как раз из-за счетчика или нового потока идут. т.е. в мой код передает значение глобальной переменной.
неужели без лока ?
 

radv

Client
Регистрация
11.05.2015
Сообщения
2 918
Благодарностей
1 509
Баллы
113
неужели без лока ?
локи не помогают. Без них и первый раз многопоток не запустился бы, Просто такое подозрение, что глобальная переменная неверно считает потоки или сбрасывает на ноль их. Уже разные варианты пробовал. Может где то уже затупил.
 

Вложения

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 068
Благодарностей
724
Баллы
113
Так можно управлять потоками
C#:
lock(SyncObject) {
    if(project.GlobalVariables["Глобал", "z"].Value==null){
        project.GlobalVariables.SetVariable("Глобал", "z", 0);
    }
  if(project.GlobalVariables["Глобал", "z"].Value!=null&&project.GlobalVariables["Глобал", "z"].Value==""){
project.GlobalVariables.SetVariable("Глобал", "z", "Вошли парсить ссылки");
    return "Зашёл 1 поток";
}
    else throw new Exception();

}
На выходе
C#:
lock(SyncObject) {
project.GlobalVariables.SetVariable("Глобал", "z", "");
return "Можно заходить другим";
}
Но сперва переменную надо инициировать, или создать в ручную.






C#:
lock(SyncObject) {
    try {
        var gb_count = project.GlobalVariables["глобал", "shab_name"];
        if(Convert.ToInt32(gb_count.Value) > 5)
        {
            //иди по красной
            throw new Exception();
        }   
          
        return ++gb_count.Value;
    }
    catch (KeyNotFoundException ex) {
        project.GlobalVariables.SetVariable("глобал", "shab_name", 1);
        return 1;
    }
}
 
  • Спасибо
Реакции: radv

radv

Client
Регистрация
11.05.2015
Сообщения
2 918
Благодарностей
1 509
Баллы
113
Так можно управлять потоками
Спасибо. Глобальные переменные пробовал. Все равно неверно считает. Буду тестить добавление потоков и выполнений. Должно лучше сработать.
 

myndeswx

Client
Регистрация
15.05.2017
Сообщения
288
Благодарностей
25
Баллы
28
В 7.3.0.0 Добавили возможность получить кол-во активных потоков. Вот код:
C#:
var Id = Guid.Parse(project.TaskId);
int currentTaskThreadsById = ZennoPoster.GetThreadsCount(Id);
return currentTaskThreadsById;
I know this is an old thread, but maybe there is a way to get running thread IDs as well?
Thank you.
 
Регистрация
23.03.2015
Сообщения
1 013
Благодарностей
439
Баллы
83
Подскажите, а как получить именно заданное максимальное количество потоков, а не текущее активное?
C#:
ZennoPoster.GetThreadsCount(name_project);
Этот метод возвращает количество активных потоков, есть такой же для получения заданного максимального числа потоков?
@Mikhail B.
Есть решение данного вопроса?
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
13 495
Благодарностей
5 082
Баллы
113
@Mikhail B.
Есть решение данного вопроса?
Честно сказать я один раз сделал шаблон управлятор и больше его не трогал. По этому не компетентен в данном вопросе. Возможно кто-то из пользователей или администрации ответить сможет. Не исключено, что со времен написания статьи добавили что-то новое.
 

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