Глобальный счетчик

cherus09

Client
Регистрация
10.10.2016
Сообщения
171
Благодарностей
14
Баллы
18
Привет, во время работы шаблона создаю глобальный счетчик для работы в многопотоке. При попытке увеличить этот счетчик на 1 в ProjectMaker V7 все работает нормально, а в ZennoPoster V7 выдает ошибку "Входная строка имела неверный формат."
Вот код счетчика:
C#:
lock(SyncObject) {
    
    try {
        //Если глобалка инициализирована - апаем на 1, возвращаем в переменну.
        var gb_count = project.GlobalVariables["namespace", "global_count"];
        gb_count.Value = Convert.ToInt32(gb_count.Value.ToString())+1;
        return gb_count.Value;
        
    }
    catch (KeyNotFoundException ex) {
        //Если нет - инииализируем со значением 0, возвращаем ноль
        project.GlobalVariables.SetVariable("namespace", "global_count", 0);
        return 0;
    }
    
}
И еще такой вопрос как обнулить этот счетчик по завершению шаблона, чтоб при повторном запуске был 0 в счетчике. Как обнулить счетчик я знаю, вот только не могу понять при каких условиях его обнулить.
 

Чешир

Client
Регистрация
27.06.2014
Сообщения
1 540
Благодарностей
899
Баллы
113
обнулять отдельным шабом, счетчитк лучше в файл
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
171
Благодарностей
14
Баллы
18

one

Client
Регистрация
22.09.2015
Сообщения
6 793
Благодарностей
1 264
Баллы
113

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
вот только не могу понять при каких условиях его обнулить.
При условиях завершения первого потока. У которого в конце пауза 60 сек.

Не всегда и не везде подойдет.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 793
Благодарностей
1 264
Баллы
113
При условиях завершения первого потока. У которого в конце пауза 60 сек.
А как узнать какой первый а какой второй? И где гарантии что остальные Х потоков за 60сек остановятся?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
При условиях завершения первого потока. У которого в конце пауза 60 сек.

Не всегда и не везде подойдет.
да проще файл-метку выставить. или метку записать в файл. вариантов много...
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
А как узнать какой первый а какой второй? И где гарантии что остальные Х потоков за 60сек остановятся?
Назначать в проект. Гарантий нет)) глобалки это сложно. Брось ты это дело пока не поздно))

Но если оч хочется. Снипет ростоникса поищи. Он до сих пор трудится в парсере у меня.
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 793
Благодарностей
1 264
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 793
Благодарностей
1 264
Баллы
113

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
Ну ты проверяешь сколько потоков трудится в данный момент. Если например 10 то поток просто завершает. Если 1, то это и есть последний, он и обнуляет. Для начала надо ознакомится с этой статьей https://zennolab.com/discussion/threads/upravlenie-shablonom-c.54713/
 
  • Спасибо
Реакции: one

cherus09

Client
Регистрация
10.10.2016
Сообщения
171
Благодарностей
14
Баллы
18

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
выдает ошибку "Входная строка имела неверный формат."
Такую ошибку может выдавать Convert.ToInt32 если на вход ему подавать строку не с целым числом, а с текстом или числом с дробной частью, или пустую строку.
Попробуйте выводить в лог значение, которое пытаетесь сконвертировать в число.
 
  • Спасибо
Реакции: doc

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
Такую ошибку может выдавать Convert.ToInt32 если на вход ему подавать строку не с целым числом, а с текстом или числом с дробной частью, или пустую строку.
Попробуйте выводить в лог значение, которое пытаетесь сконвертировать в число.
у него все обернуто в try. вообще не должно ничего выводиться. скорее всего зенка глюкнула и начала сыпать сообщения просто от балды. за ней не раз такое поведение замечалось :-)
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
у него все обернуто в try. вообще не должно ничего выводиться.
в try обрабатывается только одно исключение - KeyNotFoundException:-)

скорее всего зенка глюкнула и начала сыпать сообщения просто от балды.
Не будем раньше времени обвинять ЗП. Люди тоже ошибаются и, например, забывают прописать значение для какой-то переменной или прописывают, но некорректное. "не раз такое поведение замечалось :-) "
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
в try обрабатывается только одно исключение - KeyNotFoundException:-)
кстати да... а я чот даже не обратил на это внимание. у себя пишу только catch () {} и все исключения падают сюда :-)
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
Не будем раньше времени обвинять ЗП. Люди тоже ошибаются и, например, забывают прописать значение для какой-то переменной или прописывают, но некорректное. "не раз такое поведение замечалось :-) "
за других не скажу, а вот свои проекты не раз чудили в зенке. ну вот реально на ровном месте начинались сыпаться ошибки на рабочем проекте. Лечилось перезагрузкой зенки, а не правкой в ПМ, так как править было нечего, все и так работало.
 

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