В настройках создания батника есть возможность установить конкретное значение количества потоков. А как добавить +1 поток к текущему количеству? И как уменьшить? Вероятно, через C# код, подскажите, пожалуйста как именно.
Поскольку чукча не программист знаний не хватает в таких вещах, тяжко пользоваться подобной документацией, хотелось бы конкретный пример на С# Поделитесь, пожалуйста, если это, конечно, сравнительно не сложная задача (для моего уровня, например, весьма сложная).
В идеале, чтобы использовался по имени, а не по id, т.к. насколько я понимаю id проекта меняется после правки в PM
Ух ты Спасибо, начинает что-то вырисовываться!
Похоже, в параметр LimitOfThreads нужно указать конкретное число потоков (по аналогии с настройками при создании батника).
А как именно добавить/отнять 1 поток? Нужно для начала получить текущее количество потоков, затем прибавить/отнять 1, положить получившееся число в переменную и вставить в приведенный код выше?
Если управление текущим шабом, то проще так:
Добавить 1 поток
C#:
var id = Guid.Parse(project.TaskId);
ZennoPoster.AddTries(id, 1);
Обнулить кол-во
C#:
var id = Guid.Parse(project.TaskId);
ZennoPoster.SetTries(id, 0);
Установить 5 потоков исполнения
C#:
var id = Guid.Parse(project.TaskId);
ZennoPoster.SetTries(id, 5);
PS: так довольно удобно рулить кол-вом потоков на основе данных из бд.
Запустили один поток - он получил из бд кол-во данных которое надо обработать и установил себе это кол-во. Ессно необходимо учесть блокировку запрашиваемых данных и шаб должен быть не зациклен.. т.е получил данные для обработки - обработал - завершился.
Не могу понять, как получить актуальное количество работающих потоков в переменную. Не всех проектов, а конкретного, по имени шаблона. Кучу тем уже перерыл, но везде мысль либо не закончена, либо пути ведут снова на "страшные" страницы документации
Разница в сленге). Для меня "установить кол-во потоков" = "установить кол-во выполнений".
Добавить потоков и установить максимум потоков - это разные вещи, прекрасно это понимаю)
Всем спасибо за ответы.
Пока что остановился на таком варианте.
Сначала подсчитываю актуальное количество потоков, сохраняю в переменную potokov_now
Код:
var tasksList = new List<string>(ZennoPoster.TasksList);
var id = new Guid(project.TaskId);
for (int i=0; i<tasksList.Count; i++) {
if (tasksList[i].Contains("<Id>"+id +"</Id>")) {
return Regex.Match(tasksList[i], @"(?<=LimitOfThreads>)\d+(?=</LimitOfThreads>)").Value;
}
}
Прибавляю единицу (либо отнимаю, в зависимости от ситуации), получаю переменную potokov_nado
Затем запускаю батник, прописывая переменные нужного количества потоков и имени проекта:
Пока все устраивает, кроме одного момента. Иногда прямо очень нужно узнать актуальное количество потоков соседнего проекта (а не текущего), т.е. по имени проекта, а не по id. Люди добрые, плиз, скиньте рабочий код для получения кол-ва потоков по имени проекта (выше код для получения по TaskId). Кусками кода из документации пользоваться не умею, к сожалению.
Готовый код не дам, но направлю:
Получаем список проектов, перебираем их ищем поле Name если оно соответствует имени шаба - проверяем ExecutionSettings.NumberOfTries - это и есть кол-во исполнений
В настройках создания батника есть возможность установить конкретное значение количества потоков. А как добавить +1 поток к текущему количеству? И как уменьшить? Вероятно, через C# код, подскажите, пожалуйста как именно.
Готовый код не дам, но направлю:
Получаем список проектов, перебираем их ищем поле Name если оно соответствует имени шаба - проверяем ExecutionSettings.NumberOfTries - это и есть кол-во исполнений
А как получить список проектов? Код, который выше предоставил ZHAG, у меня выполняется выполняется с ошибкой (видимо, нужно еще какие-то параметры указать, а я ж бамбук, просто копипаст делаю):
Ошибку действительно не выдает теперь. Теперь не пойму, как этот код использовать на практике. В какой список добавится информация, нужно ли объявить имя списка в коде? Вроде простая задача, а я застрял в ней из-за непонимания базовых вещей, сорри. Когда вы скидываете "направление", явно рассчитываете на хотя бы средний уровень знаний кода, но спешу Вас разочаровать
И еще: в PM этот код должен ведь сработать, получит ли он информацию от запущенного ZP?