как получить кол-во потоков ?

  • Автор темы Автор темы wizard
  • Дата начала Дата начала
Есть способ получить количество запущенных потоков ?
https://help.zennolab.com/en/v5/zennoposter/5.14.0.0/webframe.html#topic590.html

Кусок кода из ZennoJSBench (там шаблон открыт если что):
C#:
Развернуть Свернуть Копировать
// GUID проекта
Guid project_guid = Guid.Parse(project.TaskId);
// Количество ядер в машине
int cores = Environment.ProcessorCount;

// Полная инфа о текущем проекте в XML-формате (ВРОДЕ БЫ НЕ работает в ProjectMaker)
string task_info = ZennoPoster.GetTaskInfo(project_guid);

// создаем XML и задаем нужные параметры для запуска (НЕ ЗАБУДЬТЕ ДОБАВИТЬ В GAC + using)
var doc = new System.Xml.XmlDocument();
doc.LoadXml("<Task>" + task_info + "</Task>");

var esElement = doc.SelectSingleNode("Task/ExecutionSettings");
if (esElement == null) {
    throw new Exception("Не нашли ноду Task/ExecutionSettings");
}
var threadsElement = doc.SelectSingleNode("Task/ExecutionSettings/LimitOfThreads");
if (threadsElement == null) {
    throw new Exception("Не нашли ноду Task/ExecutionSettings/LimitOfThreads");
}
// изменяем количество потоков
threadsElement.InnerText = Convert.ToString(cores);

var triesElement = doc.SelectSingleNode("Task/ExecutionSettings/NumberOfTries");
if (triesElement == null) {
    throw new Exception("Не нашли ноду Task/ExecutionSettings/NumberOfTries");
}
// количество повторений + 1 (т.к. текущий запуск для установки данных тоже считается)
triesElement.InnerText = Convert.ToString(cores + 1);

// Передаем новые данные в постер для запуска заданий
ZennoPoster.SetExecutionSettings(project_guid, esElement.InnerXml);

// результат - в лог
project.SendWarningToLog(
    String.Format(
        "Запустили {0} параллельных потоков (по числу ядер в системе)",
        cores
    ),
    true
);

Код делает совсем другое, но по аналогии, думаю, сможете разобраться )
 
и по проекту можно указав название проекта
 
@Lord_Alfred Привел код в нормальный вид, но он возвращает максимальное число потоков, есть ли способ получить текущее число запущенных поток?

C#:
Развернуть Свернуть Копировать
// GUID проекта
Guid project_guid = Guid.Parse(project.TaskId);

// Полная инфа о текущем проекте в XML-формате (НЕ работает в ProjectMaker)
string task_info = ZennoPoster.GetTaskInfo(project_guid);

// создаем XML и задаем нужные параметры для запуска (НЕ ЗАБУДЬТЕ ДОБАВИТЬ В GAC + using: using System.Xml;)
var doc = new System.Xml.XmlDocument();
doc.LoadXml("<Task>" + task_info + "</Task>");

var threadsElement = doc.SelectSingleNode("Task/ExecutionSettings/LimitOfThreads");
if (threadsElement == null) {
    throw new Exception("Не нашли ноду Task/ExecutionSettings/LimitOfThreads");
}

project.Variables["threads"].Value = threadsElement.InnerText;
 
Последнее редактирование:

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