Глобальные переменные. Многопоточность.

Voldemar

Client
Регистрация
13.04.2014
Сообщения
478
Благодарностей
56
Баллы
28
Добрый вечер! Делаю многопоточный парсер для ВК.

Вопрос первый, что делаю не так с глобальными переменными?

Код:
// блокируем выполнение, чтобы другие потоки не испортили
lock(SyncObject)
{
    IGlobalVariable gv = null;
    try
    {
        // пытаемся получить глобальную переменную
        gv = project.GlobalVariables["[email protected]", "globalstart"];
    }
    catch(KeyNotFoundException exception)
    {
        // если не удалось получить, то инициализируем значением по умолчанию.
        project.GlobalVariables.SetVariable("[email protected]", "globalstart", 0);
    }
}
Вот такой код написан. В конце проекта устанавливаем значение переменной 1. Но при запуске нового цикла, она не сохраняются, и снова становиться по умолчанию пусто. Созданная переменная в Глобальных. Я так понимаю "project.GlobalVariables.SetVariable("[email protected]", "globalstart", 0);" устанавливает значение по умолчанию 0, но вообще ничего не ставит

Что может быть не так?
 

Voldemar

Client
Регистрация
13.04.2014
Сообщения
478
Благодарностей
56
Баллы
28
Похоже сам себе ответил. Самостоятельно переменную не надо создавать ) После того как удалил, код C# сам её создал и корректно сохраняет вроде как.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Проверьте чтобы в окне "Переменные" не было их инициализации. В начале проекта ставите проверку если переменная пустая, то ее инициализируете
 

vitalik55

Client
Регистрация
14.09.2016
Сообщения
20
Благодарностей
1
Баллы
3
а как проверить инициализацию перменной?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
кто сегодня из модеров?
чего вы удаляете
 

vitalik55

Client
Регистрация
14.09.2016
Сообщения
20
Благодарностей
1
Баллы
3
я то понял что спросил , а ты решил сумничать

я так понимаю что если я задаю переменную - то она будет инициилизироваться в начале проекта, по этому я должен ее сначала создать чтобы рабтоать с ней ( потому что если он не созданна я не могу ее в кубиках выбирать ), а перед тем как сохраить мне ее надо удалить
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
я то понял что спросил , а ты решил сумничать

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

vitalik55

Client
Регистрация
14.09.2016
Сообщения
20
Благодарностей
1
Баллы
3
первая часть - это ответ тебе
вторая часть это ответ на вопрос и судя по количеству созданых тем который волнует не только меня
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
первая часть - это ответ тебе
вторая часть это ответ на вопрос и судя по количеству созданых тем который волнует не только меня
ты реально думаешь что я с умничать решил и дебил который не разбираюсь ?
 

vitalik55

Client
Регистрация
14.09.2016
Сообщения
20
Благодарностей
1
Баллы
3
только ты можешь дать ответ на этот вопрос, я могу сказать за себя
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
глобальные переменые не так просто
для чего она тебе ?
можно по другому поступить
если инициализируешь глобалку, то её прежде чем обнулить надо перезапустить зенку
можно и кодом это сделать, но тут реально для тебя будет сложно
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
я ведь не говорю иди на фиг. я хочу понять для чего
 

vitalik55

Client
Регистрация
14.09.2016
Сообщения
20
Благодарностей
1
Баллы
3
этот вопрос переодически поднимается у меня уже в течении полу году, и только сегодня до меня дошло как правильно с ней работать )

я не проверил еще временем, но если создать глобальную переменную, пороботать с ней в проджекте, а перед сохранение проекта удалить ее из переменных ( проверить инициализацию :-) ), то она работает коректно
 

vitalik55

Client
Регистрация
14.09.2016
Сообщения
20
Благодарностей
1
Баллы
3
рабтоает коорректно я имею ввиду не обнуляется после отрабтоки потока и его перезапуска
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
этот вопрос переодически поднимается у меня уже в течении полу году, и только сегодня до меня дошло как правильно с ней работать )

я не проверил еще временем, но если создать глобальную переменную, пороботать с ней в проджекте, а перед сохранение проекта удалить ее из переменных ( проверить инициализацию :-) ), то она работает коректно
а зачем её удалять если проще обнулить
вот поэтому и спрашиваю для чего она тебе
её нельзя обнулить
она обнуляется при перезапуске
можно но если есть такой код
так ты чего добиваешься ?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
проще её создай в юзинг коде
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
но снова же, при повторном запуске не с нуля пойдёт если ты не обнулишь
 
  • Спасибо
Реакции: vitalik55

vitalik55

Client
Регистрация
14.09.2016
Сообщения
20
Благодарностей
1
Баллы
3
да - по этому я сделал такой ход
1) проверяю ее инициализацию
2) проверяю в начале проекта ее и если она != "" задаю ей 0
3) добавил проверку на пустоту с такой же логикой в момент подсчета

цель - считать количество успехов в многопотоке ( прооект может дойти до конца - а может не справиться в середине )
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
это не проблема, вы просто сасми ищите проблему в которой не понимаете
 

vitalik55

Client
Регистрация
14.09.2016
Сообщения
20
Благодарностей
1
Баллы
3
проще её создай в юзинг коде - я пробывал - по идее это тот же мопед но с другого бока
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
да - по этому я сделал такой ход
1) проверяю ее инициализацию
2) проверяю в начале проекта ее и если она != "" задаю ей 0
3) добавил проверку на пустоту с такой же логикой в момент подсчета

цель - считать количество успехов в многопотоке ( прооект может дойти до конца - а может не справиться в середине )
что у тебя не получилось ?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
проще её создай в юзинг коде - я пробывал - по идее это тот же мопед но с другого бока
тут ты не прав. там ты можешь кодолм обнулить
а зеновским методом надо перезагружать проект
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
у тебя глобалка
я например раньше использовал и врубал её в строку
у меня было видно какой поток отрабатывает и что делает

ты этого достигнуть хотишь ?
 

vitalik55

Client
Регистрация
14.09.2016
Сообщения
20
Благодарностей
1
Баллы
3
я хочу подсчитать общее количество успехов с момоента перезапуска проекта
каждый поток может дать разное кол-во успехов за цикл, примерно от 0 до 10

и я подсчитываю количество успехов с момента запуска global.variable.1111.number + variable.done

по идее мне надоо как то ее обнулять ( не каждый раз а только в момент перезапуска )
но если я делаю стоп/старт - то мне надо продолжить подсчет
похоже мне надо привязать ее к фаилу и это будет самый простой вариант
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
я хочу подсчитать общее количество успехов с момоента перезапуска проекта
каждый поток может дать разное кол-во успехов за цикл, примерно от 0 до 10

и я подсчитываю количество успехов с момента запуска global.variable.1111.number + variable.done

по идее мне надоо как то ее обнулять ( не каждый раз а только в момент перезапуска )
но если я делаю стоп/старт - то мне надо продолжить подсчет
похоже мне надо привязать ее к фаилу и это будет самый простой вариант
при нажатии стоп старт у тебя глобалка не обнуляется а продолжает с цифры +100500 например. ты этого хотишь, так и получается
к файлу привязать для чего
какой тогда многопоток?
еспо сути для новичка проще к файлу
взял строку и это тебе будет поток
только если милиард то накдно для зенки
 

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