Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2016, 07:35   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Ссылки на объекты

Здравствуйте.
Я тут намутил следующую конструкцию:

1) создаётся таймер;
2) к таймеру прикручиваются данные
3) к событию Tick прикручивается обработчик, который я так же соорудил.

В дальнейшем таймер должен отработать пять тиков (по условию данных), но ссылка на этот таймер мне больше не нужна ... Сам таймер сделает что ему (то есть мне) надо. Но он сделает это только в том случае, если его не приберёт к рукам сборщик мусора.
Отсюда вопрос: как хранить объекты, ссылки на которые мне не нужны ?

Я конечно могу эти объекты просто скидывать в какой нибудь внешний генерик, но тогда ссылка на этот объект будет, а соответственно, объект не будет удаляться, генерик будет толстеть, ну вы поняли.
Сам же обработчик истребляет таймер методом (sender as Timer).Dispose(); но если будет какая то внешняя ссылка без управления коллекцией - то коллекция будет расти в размерах, о чём я уже сказал ранее. Самая беда в том, что таймеры создаются рандомно, именно поэтому я не могу придумать, как управлять коллекцией, в которой я должен хранить эти самые объекты.

(Вопрос: как хранить объекты, ссылки на которые мне не нужны ?)

UPD: придумал ... Максимальное количество таких объектов = 20, а значит я могу обойтись массивом постоянного размера; и при создании объекта буду выбирать первое свободное место из этого массива ...
Тему можно удалять.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 21.12.2016 в 07:41.
OmegaBerkut вне форума Ответить с цитированием
Старый 21.12.2016, 23:48   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

делается Hashset временных объектов, по истечении времени жизни удаляете оттуда и все.
+ если объект IDisposable, то лучше всегда вызывать Dispose.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дочернии объекты ActiveX компонента, как добавить в ActiveX объект дочернии объекты. nik531 Общие вопросы Delphi 0 17.08.2015 09:26
В окне перемещаются объекты, отталкиваясь от стенок окна. Каждый объект имеет свой поток, перемещающий его. Встретившись, объекты ИльназВ C# (си шарп) 13 22.11.2012 19:00
Получить имя файла из ссылки(в конце ссылки нет имени файла) Человек_Борща Работа с сетью в Delphi 11 05.06.2011 15:15
Объекты Syltan HTML и CSS 1 24.03.2010 21:08