Глобальные

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Подскажите как в С# сделать сравненение глобальной, так мы сравниваем в экшене if
{-GlobalVariable.GlobalSakhaLin1.globVar1-} > 0
пытаюсь в С# не выходит что то, глобальная инициализирована, и мне надо её сравнить со значением
Код:
        if(int.Parse(project.GlobalVariables["GlobalSakhaLin1", "globVar1"]) > 0)
        return null;   так не хочет работать
=======================
        if(project.GlobalVariables["GlobalSakhaLin1", "globVar1"] > 0)
        return null;   и так не хочет работать
 

ssXXXss

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 416
Благодарностей
9 119
Баллы
113
потерто..
 
Последнее редактирование:

ssXXXss

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

rostonix

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

ssXXXss

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

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Я имею ввиду изменение значений. Тогда нужно лочить. Я вам в прошлой теме кидал пример с реализацией лока
 

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
Мне очень важно что бы потоки распределились правильно, и не понимал почему проект иногда завершается не с ошибкой но и не как мне надо, оказалось вот что, это я проводил тест и не один, выяснилось что потоки даже и если лочишь то всё равно пересекаются, как этого избежать, для небольшого потока вроде нашёл решение, когда мы выставляем сколько делать к примеру 5 ждём примерно 10 секунд и старт и всё нормально, но если мы выбираем и сразу старт то выдаёт вот это, на скрине видно скажем так две ветки, первая ветка это 11. ну а значит вторая 22, но почему то значение потоков пересеклось и записалось не правильно, как такое исправить???
2015-09-12_003956.png
 

rostonix

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

ssXXXss

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Поставил рандом паузу в начале вроде потоки правильно начали отображаться, но теперь проблема такая, я беру йди с файла по счётчику и каждый поток начинает брать по номеру своего потока, что бы вначале не пересеклись, но в середине проекта они всё равно пересекаются и получается что три потока хотят сразу отдать голос этому йди, с удалением мне не пойдёт, это очень часто перезаписывать в файл, протестировав раз 200 уже если не больше то уходит на перезапись примерно от 2 до 3 секунд что бы следующий поток мог обратиться к списку, а это для меня огромное время если эти секунды умножить на 5000, сравнение делаю с глобальными туда всё в миллесекунды записывается, но получается что они не спасают, допустим за один йди надо 3 лайка, и когда происходит сравнение этому йди остаётся один лайк, но тут резко и как то не синхроно сразу вырываются три потока лайкнуть за него, уже до такой степени затестил что оповещения через экшен наставил, и видно как в одну и ту же миллисекунду три потока делают глобальное сравнение видя что на этот йди надо лайк и все гопом)) заходят по сылке, в итоге лишние лайки и сбой программы
Подскажите как мне поставить сравнение и узнать глобально что за этот йди пытаются три потока лайкнуть , это я на пяти потоках тестирую, хотя на днях до про наверно буду обновляться, и что будет при ста потоках тогда, и ещё раз повторюсь с удалением не предлагать
===============================================
Потестив ещё несколько часов выясняется вот что, стоит выбор рандом пауза локально, как я понимаю для кажого потока она будет своя, но на скрине видим что потоки разные а время одно и тоже, или я что то не догоняю)))
2015-09-13_234930.pngперед словом поток на эту цифру внимания не обращайте, это я для себя делаю пометки в проекте))
 
Последнее редактирование:

rostonix

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

после изменения глобальной (В ЛОКЕ!) сразу передавать ее значение в локальную переменную (В ТОМ ЖЕ ЛОКЕ!)
и использовать в проекте дальше уже значение из локальной
 

ssXXXss

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

после изменения глобальной (В ЛОКЕ!) сразу передавать ее значение в локальную переменную (В ТОМ ЖЕ ЛОКЕ!)
и использовать в проекте дальше уже значение из локальной
rostonix Вроде всё так как ты и описал
Код:
lock(SyncObject) {
    var gbVar = project.GlobalVariables["GlobalSakhaLinS", "globVarS"];
    gbVar.Value = Convert.ToInt32(gbVar.Value.ToString())+1;
    project.Variables["stream"].Value = gbVar.Value.ToString();
}
но не получается почему то, бывает три потока сразу делают запрос когда надо один
 

rostonix

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

ssXXXss

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

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
не должно такого быть если лочите (
 

ssXXXss

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

rostonix

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

ssXXXss

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Может что то и неправильно но менял уже во многих вариантах и не могу понять, сначала отрабатывает нормально, после перезапуска как будто вообще ничего не видит, изменив что нить в этой конструкции опять поработает какое время и опять ничего не видит, есть вот такое сравнение, в трёх переменых числа
Код:
int s = int.Parse(project.Variables["userId"].Value.ToString());
int v = int.Parse(project.Variables["cell_voite"].Value.ToString());  // значение в переменой 1
var i = project.GlobalVariables["Globals"+s+"", "globVars"+s+""];  // значение в переменной 7
i.Value = Convert.ToInt32(i.Value.ToString());
if(v <= i.Value) return null;
Что не так? Почему выходит по успеху? версия 5.9.1.0
 
Последнее редактирование:

ssXXXss

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

P.S. По поводу замены имён вопрос решил, ну вот удалить бы ещё))))
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Удалить нельзя :-)
 

ssXXXss

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Подскажите как мне в вижуал студио записать в проекте глобальную из зенопостера, к примеру моя глобальная в постере project.GlobalVariables["GlobalSakhaLinS", "globVarS"];
 

ssXXXss

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 416
Благодарностей
9 119
Баллы
113
К примеру имеется три проекта у клиента в одном зенобоксе, в каждом из трёх проектов повторяется глобальная с одним и тем же именем, возник такой вопрос: взаимосвязаны ли эти глобальные между тремя проектами, передаётся ли значение из проекта в проект, или в каждом проекте надо новое имя задавать???
сляпай 3 тестовых проекта с одинаковыми глобальными, или даже 2..
и проверь, думаю займет не более 10 минут и ответ уже "в студии" будет.. :-)
ну и нам расскажешь..

но мне кажется, что пересечения не должно быть..
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
К примеру имеется три проекта у клиента в одном зенобоксе, в каждом из трёх проектов повторяется глобальная с одним и тем же именем, возник такой вопрос: взаимосвязаны ли эти глобальные между тремя проектами, передаётся ли значение из проекта в проект, или в каждом проекте надо новое имя задавать???
глобальные переменные не привязаны к проекту. в этом отличие от локальных.
поэтому если пространство имен и имя переменной используется одинаковое - то имеется ввиду одна и та же переменная
 
Последнее редактирование:
  • Спасибо
Реакции: ssXXXss

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Когда создавался шаблон с глобальными их было не много и как то скажем так не затрудняло при тесте в РМ их каждый раз удалять, сейчас их стало больше и при их удалении не очень удобно, приходится каждую удалять
а можно придумать кнопочку удалить или очистить все глобальные????
Так сам сделай кнопочку.
 
Последнее редактирование:

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