Подскажите сниппеты для C# - удалить переменную и список

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Доброго дня форумчане. Знатоки подскажите два момента.
Есть сниппет очистки переменной
project.Variables["Переменная"].Value = String.Empty;
А как должны выглядеть сниппеты для блока "C# Свой код"
- удалить переменную
- удалить список (список в проекте не привязан к файлу и существует только в период выполнения "C# Свой код")
Спасибо и хороших выходных
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
К сожалению нужных сниппетов там нет
Но пока "курил" форум нашел сниппет удаления переменной от Astraport
Сниппет полного удаления переменной в проекте:
string variableName = "test";
object obj = project.Variables;
obj.GetType().GetMethod("DeleteVariable").Invoke(obj,new Object[]{variableName});
Точнее
Половину вопроса решил так сказать, теперь "курю" дальше
PS Может у кого есть сниппет удаления списка, по типу того что выше?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
сниппет удаления списка
Вы хотите список удалить или файл из которого получаете список?
Список хотите удалить зенновский, или который сами создали ранее?
Может тогда посмотрите на ютуб видеоуроки по C#?
 

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Вы хотите список удалить или файл из которого получаете список?
Список хотите удалить зенновский, или который сами создали ранее?
Ситуация такая. Я создаю список в проекте куда складываются результаты работы части кода.
После того как работа завершена - этот список необходимо удалить с проекта
Данный список является виртуальным и не привязан к файлам извне программы и работает только внутри ее.
Это как аналог - когда при выделении подсписка создается новый список и в него переносится часть данных, только в моем случае список заполняется уже в процессе работы и не имеет связей за пределами программы
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Ситуация такая. Я создаю список в проекте куда складываются результаты работы части кода.
После того как работа завершена - этот список необходимо удалить с проекта
Данный список является виртуальным и не привязан к файлам извне программы и работает только внутри ее.
Это как аналог - когда при выделении подсписка создается новый список и в него переносится часть данных, только в моем случае список заполняется уже в процессе работы и не имеет связей за пределами программы
Я думал он всегда сам после завершения потока удаляется
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Ситуация такая. Я создаю список в проекте куда складываются результаты работы части кода.
После того как работа завершена - этот список необходимо удалить с проекта
Так создавайте список внутри цикла. За пределами цикла он не будет существовать. Про области видимости знаете?
Если вы переходите в другой кубик, то он так же перестает существовать.
Ну или вы всегда можете очистить этот список от всех данных в нем.
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Я думал он всегда сам после завершения потока удаляется
Добрый день. К сожалению я тоже так думал. но при выходе с экшена "Свой код" и переходу в другой экшн - он остается доступен и производит утечку памяти
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Добрый день. К сожалению я тоже так думал. но при выходе с экшена "Свой код" и переходу в другой экшн - он остается доступен и производит утечку памяти
Как вы это определили, что именно из-за и за этого списка много утечки памяти?
 

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Так создавайте список внутри цикла. За пределами цикла он не будет существовать. Про области видимости знаете?
Если вы переходите в другой кубик, то он так же перестает существовать.
Ну или вы всегда можете очистить этот список от всех данных в нем.
Ответил выше. При переходе в другой экшн и при завершении потока - список остается доступен хотя не имеет никакой привязки за пределами программы.
Очистка списка - это самое подходящее решение для однотипных данных и к сожалению мне не подходит так как в процессе работы мне для обеспечения логики просто необходимо плодить данные сущности и чтобы не провоцировать утечек памяти, также крайне важно их удалять
 

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
не используй тогда их. Работай с List<string> . Нельзя эти списки создавать/удалять из c#
 
  • Спасибо
Реакции: DevOps

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
мне для обеспечения логики просто необходимо плодить данные сущности и чтобы не провоцировать утечек памяти, также крайне важно их удалять
Тогда продумайте объектную модель и работайте из общего кода, а кубиках только диспетчер обращения к методам общего кода
 
  • Спасибо
Реакции: DevOps

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
не используй тогда их. Работай с List<string> . Нельзя эти списки создавать/удалять из c#
Пока не вижу вариантов как обойтись без таких списков, но буду искать альтернативу. Спасибо
 

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Тогда продумайте объектную модель и работайте из общего кода, а кубиках только диспетчер обращения к методам общего кода
Да. Вы правы, необходимо переделать логику и не заниматься моральной мастурбацией. Спасибо
 

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 228
Благодарностей
784
Баллы
113
C#:
string variableName = "test";
object obj = project.Variables;
obj.GetType().GetMethod("DeleteVariable").Invoke(obj,new Object[]{variableName});
Точнее
Половину вопроса решил так сказать, теперь "курю" дальше
А для чего такие извращенства? Если уж говорить об оптимизации - рефлексия (которая используется в данном снипете) сама по себе довольно ресурсозатратное занятие
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
А для чего такие извращенства? Если уж говорить об оптимизации - рефлексия (которая используется в данном снипете) сама по себе довольно ресурсозатратное занятие
возможно ему надо перекидывать значение между кубиками. Я так и не нашел нормального решения. может подскажешь? Скажем, у меня несколько кубиков c#. В 1-м я в список добавил какие-то данные, которые потом хочу использовать во 2-м кубике (для каждого потока список должен быть уникальным). В этом случае я как раз использовал списки IZennoList без привязки к физическому файлу.

Можно использовать project.Context, но при отладке в Project Maker он теряет значения, что делает саму отладку невозможной. Привязываться к файлу не вариант (вернее, не слишком удобно), т.к. надо, чтобы на каждый поток был свой список.

Пробовал ещё [ThreadStatic] public static List<string> spisok , но в ZP он выдаёт ошибку при использовании
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
А для чего такие извращенства? Если уж говорить об оптимизации - рефлексия (которая используется в данном снипете) сама по себе довольно ресурсозатратное занятие
человек не знает что предпринять, вот и мечется из стороны в сторону. тоже не понятно чем помешали переменные, ну да ладно :bk:
 
  • Спасибо
Реакции: DevOps

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
возможно ему надо перекидывать значение между кубиками. Я так и не нашел нормального решения. может подскажешь? Скажем, у меня несколько кубиков c#. В 1-м я в список добавил какие-то данные, которые потом хочу использовать во 2-м кубике (для каждого потока список должен быть уникальным). В этом случае я как раз использовал списки IZennoList без привязки к физическому файлу.

Можно использовать project.Context, но при отладке в Project Maker он теряет значения, что делает саму отладку невозможной. Привязываться к файлу не вариант (вернее, не слишком удобно), т.к. надо, чтобы на каждый поток был свой список.
через Context можно и в ПМ отлаживать, только между моментом формирования объектов в Context и обращением к нему, нельзя делать правки в шаблоне.
Если правки сделаны, то да, Context слетает и надо запускать с момента записи в Context. неудобно, но возможно.
 

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 228
Благодарностей
784
Баллы
113
В 1-м я в список добавил какие-то данные, которые потом хочу использовать во 2-м кубике (для каждого потока список должен быть уникальным). В этом случае я как раз использовал списки IZennoList без привязки к физическому файлу.
Так в чем проблема? IZennoList не уникален для каждого потока?
 

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Нет, эти листы общие для всех потоков
но это же нонсенс.... как они могут быть общими ? если только привязаны на один файл.... а если файл гигантский, то здрасте минус кусок памяти. , так как в каждом потоке загружаются копии этого файла.
лучше бы описали задачу поставленную, а то все загадками да загадками. то в одной теме кусочек кода, без подробностей, то в другой кусочек... прямо как будто сверхсекретный ядерный реактор там пишется :ca:
 

Oleg1987

Client
Регистрация
11.08.2014
Сообщения
1 228
Благодарностей
784
Баллы
113

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Вчера на форуме где то раскопал. вроде у Ростоникса, что создаваемый список по типу Lists.Add является общим для всех потоков. Постараюсь найти данную страничку, просто за эти дни практически весь форум перерыл в поисках некоторых образцов решений или кода
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
А как должны выглядеть сниппеты для блока "C# Свой код"
- удалить переменную
- удалить список (список в проекте не привязан к файлу и существует только в период выполнения "C# Свой код")
С "коробки" нет возможности это сделать.
Но, можно попытаться используя рекурсию докопаться до нужных функций.
Пример как это сделать когда-то показывал пользователь @legorange в этой теме - речь шла о методах установки значения по умолчанию для переменных.
Возможно, что подобным способом можно создать и удалить список.

Хотя... Может быть в данном случае проще было бы использовать контекст, чем пытаться разобраться с не документированным функционалом Зенно...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Вчера на форуме где то раскопал. вроде у Ростоникса, что создаваемый список по типу Lists.Add является общим для всех потоков. Постараюсь найти данную страничку, просто за эти дни практически весь форум перерыл в поисках некоторых образцов решений или кода
ну вырвано из контекста же.... может там статика... тогда может быть... но кто в здравом уме в многопотоке список объявляет общий на все потоки ? это же какую систему контроля надо делать для таких списков.
Lists.Add это вообще обычное добавление строки в список. список может быть общим если он привязан к файлу, но опять же не объект список общий, а файл общий. если поток забиндит на этот список другой файл , то другие потоки в жизни не увидят изменения этого списка в другом потоке. Опять же что за Lists там у него в коде ? это Lists привязанный к списку зенки или новый созданный в C# ?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Вообще нафига удалять список, который не привязан к файлам ? ну есть структура объекта в памяти, ну и не хай себе там висит. пару байт, кому они помешали ?
Не нужен список, так очистить его и все. Память не жрет. у меня куча таких списков в шаблоне, вообще ничего не утекает.
Другое дело, когда такие списки на файлы завязаны, тогда да, в каждый поток загрузится копия файла.... в общем ситуация не понятная, но очень интересная :ca:
 
  • Спасибо
Реакции: DevOps

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Вообще нафига удалять список, который не привязан к файлам ? ну есть структура объекта в памяти, ну и не хай себе там висит. пару байт, кому они помешали ?
Не нужен список, так очистить его и все. Память не жрет. у меня куча таких списков в шаблоне, вообще ничего не утекает.
Другое дело, когда такие списки на файлы завязаны, тогда да, в каждый поток загрузится копия файла.... в общем ситуация не понятная, но очень интересная :ca:
"Не нужен список, так очистить его и все." - Все гениальное просто, спасибо, действительно что я парюсь
 

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