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

  • Автор темы Автор темы Voldemar
  • Дата начала Дата начала

Voldemar

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

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

Код:
Развернуть Свернуть Копировать
// блокируем выполнение, чтобы другие потоки не испортили
lock(SyncObject)
{
    IGlobalVariable gv = null;
    try
    {
        // пытаемся получить глобальную переменную
        gv = project.GlobalVariables["ecohelptoday@gmail.com", "globalstart"];
    }
    catch(KeyNotFoundException exception)
    {
        // если не удалось получить, то инициализируем значением по умолчанию.
        project.GlobalVariables.SetVariable("ecohelptoday@gmail.com", "globalstart", 0);
    }
}

Вот такой код написан. В конце проекта устанавливаем значение переменной 1. Но при запуске нового цикла, она не сохраняются, и снова становиться по умолчанию пусто. Созданная переменная в Глобальных. Я так понимаю "project.GlobalVariables.SetVariable("ecohelptoday@gmail.com", "globalstart", 0);" устанавливает значение по умолчанию 0, но вообще ничего не ставит

Что может быть не так?
 
Похоже сам себе ответил. Самостоятельно переменную не надо создавать ) После того как удалил, код C# сам её создал и корректно сохраняет вроде как.
 
Проверьте чтобы в окне "Переменные" не было их инициализации. В начале проекта ставите проверку если переменная пустая, то ее инициализируете
 
а как проверить инициализацию перменной?
 
кто сегодня из модеров?
чего вы удаляете
 
я то понял что спросил , а ты решил сумничать

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

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

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

я не проверил еще временем, но если создать глобальную переменную, пороботать с ней в проджекте, а перед сохранение проекта удалить ее из переменных ( проверить инициализацию :-) ), то она работает коректно
а зачем её удалять если проще обнулить
вот поэтому и спрашиваю для чего она тебе
её нельзя обнулить
она обнуляется при перезапуске
можно но если есть такой код
так ты чего добиваешься ?
 
проще её создай в юзинг коде
 
но снова же, при повторном запуске не с нуля пойдёт если ты не обнулишь
 
  • Оценить
Реакции: vitalik55
да - по этому я сделал такой ход
1) проверяю ее инициализацию
2) проверяю в начале проекта ее и если она != "" задаю ей 0
3) добавил проверку на пустоту с такой же логикой в момент подсчета

цель - считать количество успехов в многопотоке ( прооект может дойти до конца - а может не справиться в середине )
 
это не проблема, вы просто сасми ищите проблему в которой не понимаете
 
проще её создай в юзинг коде - я пробывал - по идее это тот же мопед но с другого бока
 
да - по этому я сделал такой ход
1) проверяю ее инициализацию
2) проверяю в начале проекта ее и если она != "" задаю ей 0
3) добавил проверку на пустоту с такой же логикой в момент подсчета

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

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

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

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

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

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

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