странная работа глобальных переменных

linkod

Пользователь
Регистрация
11.10.2018
Сообщения
118
Благодарностей
1
Баллы
16
Здравствуйте, коллеги. Буду краток.
Есть код
Код:
lock(SyncObject) {
    try {
        //Если глобалка инициализирована - апаем на 1, возвращаем в переменну.
        var gb_count = project.GlobalVariables["namespace", "global_count"];
        gb_count.Value++;
        return gb_count.Value;
    }
    catch (KeyNotFoundException ex) {
        //Если нет - инииализируем со значением 0, возвращаем ноль
        project.GlobalVariables.SetVariable("namespace", "global_count", 0);
        return 0;
    }
}
при выполнении которого в ПМ все ок, а в ЗП вылетает ошибка о невозможности преобразования стринг в инт на этапе
Код:
gb_count.Value++;
Рабочий код такой у меня
Код:
int fl = 0;

lock(SyncObject)
{
    try
    {
        //Если глобалка инициализирована - апаем на 1, возвращаем в переменну.
        IGlobalVariable gb_count = project.GlobalVariables["[email protected]","Nubmer_of_flow"];
        fl = Int32.Parse(gb_count.Value.ToString()) + 1;
        project.GlobalVariables.SetVariable("[email protected]","Nubmer_of_flow", fl);
        return fl;
    }
    catch (KeyNotFoundException ex)
    {
        //Если нет - инииализируем со значением 0, возвращаем ноль
        project.GlobalVariables.SetVariable("[email protected]","Nubmer_of_flow", fl);
        return fl;
    }
}
Вопрос.

1) почему в ПМ работает?
2) Как обойтись без лишних преобразований в рабочем коде?
 

linkod

Пользователь
Регистрация
11.10.2018
Сообщения
118
Благодарностей
1
Баллы
16
еще один вопрос назрел. при вызове подпроекта, его общий код и соответственно локи распространяются на код вызывающего проекта?
 

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