Гость
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using() / 22 сообщений из 22, страница 1 из 1
28.04.2021, 15:45
    #40066781
Bold Stump
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Дали работу над старым приложением. Это сервис. Работает круглосуточно, ночью перезагружается вместе с машиной. Грузит в себя данные, формирует из них очередь, суёт переданные издалека созданные и сконфигурированные SqlCommand инстанции в поле Command каждого объекта в очереди, выполняет их и очищает очередь.
Естественно, команды в таком дизайне не завёрнуты в using(). После очистки очереди они, как я понимаю, магически не освободят неуправляемые ресурсы.
Достаточно ли просто вызвать на каждую из них QueueItemInstance.Command.Dispose() в try/catch блоке и проглотить исключение если его что-то бросит, или тут нужно что-то другое, типа имплементировать IDisposable на QueueItem - объекте из которых формируется очередь и т д и т п?

Премного благодарен!
...
Рейтинг: 0 / 0
28.04.2021, 16:17
    #40066796
Bold Stump
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Да, вот еще: обработка очереди происходит, естественно, в foreach(), так что даже если я буду звать QueueItemInstance.Dispose(), то не смогу QueueItemInstance = null, поэтому сомневаюсь в целесообразности имплементации IDisposable на QueueItem.
...
Рейтинг: 0 / 0
28.04.2021, 16:52
    #40066821
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump,
У вас есть подозрение, что не правильно релизованы финализаторы у инструментов?
Имхо параноя, если все работает годами и не падает, не стоит туда соваться.
...
Рейтинг: 0 / 0
28.04.2021, 17:25
    #40066837
Bold Stump
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Где-то в степи
Bold Stump,
У вас есть подозрение, что не правильно релизованы финализаторы у инструментов?
Имхо параноя, если все работает годами и не падает, не стоит туда соваться.


Нет, ничего подобного! Просто в очередь суётся некий класс, своя моделька, в котором есть поле

SqlCommand Command.

Прошлись foreach() по очереди, для каждого элемента сделали QueueItemInstance.Command.ExecuteNonQuery() и после цикла вызвали queue.Clear()

Естественно, моделькам будет вызван деструктор, но класс модельки QueueItem не дитё IDisposable и не развополщает эту Command, следовательно на неё не будет вызван Dispose().

Понятно объясняю?
...
Рейтинг: 0 / 0
28.04.2021, 17:30
    #40066841
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump,

Почитайте у Рихтера про имплементацию IDisposable в сочетании с финализатором.
...
Рейтинг: 0 / 0
28.04.2021, 17:38
    #40066848
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump,
Там защита от дурака должна быть ( образно) вдруг разраб забыл using поставить, тихо мирно умрет..
слушайте Сон Веры Павловны он плохого не посоветует...
...
Рейтинг: 0 / 0
28.04.2021, 17:39
    #40066851
Bold Stump
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Сон Веры Павловны
Bold Stump,

Почитайте у Рихтера про имплементацию IDisposable в сочетании с финализатором.


Зачем мне читать какого-то Рихтера, когда все детали имплементации есть в MSDN?
Я не спрашиваю, как это имплементировать. Я прошу совета, можно ли просто вызвать Dispose на саму инстанцию SqlConnection, потому что самому мне никогда не приходилось это делать: я не посылаю команды в пеше путешествие через всё приложение, а создаю их в using() где и когда мне нужно.

Я не хочу перелопачивать всё их приложение, поэтому ищу ответа на ранее поставленный вопрос, а зачитываться книжками мне некогда. Не надо отсылать к книжкам по поводу тривиальных вопросов - это никому не помогает. Ситуация специфическая, потому что изначальный разраб был нубом (и остался, по правде говоря), и врядли она когда-нибудь для меня повторится, а становиться знатоком внутренностей .NET мне заработать на жизнь не поможет.
...
Рейтинг: 0 / 0
28.04.2021, 17:42
    #40066853
Bold Stump
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Где-то в степи
Bold Stump,
Там защита от дурака должна быть ( образно) вдруг разраб забыл using поставить, тихо мирно умрет..
слушайте Сон Веры Павловны он плохого не посоветует...


Где гарантия? MS не зря сделали SqlCommand имплементирующим IDisposable. На это у них была какая-то причина, и не доверять им у меня нет никаких оснований. Значит, защиты от дурака они не предусмотрели. Что-то должно утекать, если не развоплощать SqlCommand как следует. Не знаю что и не хочу знать, но раз он IDisposable, то уничтожить объект нужно.
...
Рейтинг: 0 / 0
28.04.2021, 18:11
    #40066867
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump,
да забейте, все ведь работает - all die
вот прикиньте, сделаете подтиралку за собой, чето сбойнет, вы крайний, лишат премии, обьявят выговор, порицание,
поставят на вид, от вас уйдет близкий человек - как от неумехи, ваша кошка будет призирать вас за туфотовый код, дерпессия, смена работы, запой, клошаринг, бачки, теплотрасса - и все за ... using, оно вам надо?
...
Рейтинг: 0 / 0
28.04.2021, 18:19
    #40066879
Bold Stump
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Где-то в степи
Bold Stump,
да забейте, все ведь работает - all die


убедившись, что ответа не добиться, уже заменил передачу по эстафете команды на её текст. и Вы забейте!
...
Рейтинг: 0 / 0
28.04.2021, 18:33
    #40066890
Bold Stump
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Где-то в степи
Bold Stump,
да забейте, все ведь работает - all die
вот прикиньте, сделаете подтиралку за собой, чето сбойнет, вы крайний, лишат премии, обьявят выговор, порицание,
поставят на вид, от вас уйдет близкий человек - как от неумехи, ваша кошка будет призирать вас за туфотовый код,
дерпессия, смена работы, запой, клошаринг, бачки, теплотрасса - и все за ... using, оно вам надо?


а потом все удивляются короне
...
Рейтинг: 0 / 0
28.04.2021, 18:39
    #40066896
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump,
вообще что мешает поставить обыкновенный using, там надо с try cath - если есть разобраться и с системой отката трансакции если есть, что бы не вызвать rollback на закомиченную трансакцию, а то что грохнется в usinge забейте, там компилятор в секции final всеравно будет тупо диспозить, что ж такие вещи то нафорум тащить?
...
Рейтинг: 0 / 0
28.04.2021, 18:45
    #40066907
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump
а потом все удивляются короне

гыгы конец рабочего европейского дня:
Мы писали.
Мы писали.
Наши пальчики устали. ( назидательно так)
Мы немножко попиз...ём.
И опять писать начнём ( уверенно и весело так)
...
Рейтинг: 0 / 0
28.04.2021, 19:03
    #40066928
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Архитектура огонь.
...
Рейтинг: 0 / 0
28.04.2021, 22:43
    #40067020
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
fkthat
Архитектура огонь.


Вот это я понемаю файловер )
...
Рейтинг: 0 / 0
28.04.2021, 23:55
    #40067030
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump
убедившись, что ответа не добиться, уже заменил передачу по эстафете команды на её текст. и Вы забейте!

Слава Ктулху, что дошло, что такие объекты, как SqlCommand или SqlConnection просто не предназначены для того, чтобы положить их куда-то на неделю, а потом достать и использовать.
...
Рейтинг: 0 / 0
29.04.2021, 06:50
    #40067060
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump
Зачем мне читать какого-то Рихтера, когда все детали имплементации есть в MSDN?

Ну раз вы так хорошо знаете MSDN, то как получилось пройти мимо этого ?
The using statement ensures that Dispose (or DisposeAsync) is called even if an exception occurs within the using block. You can achieve the same result by putting the object inside a try block and then calling Dispose (or DisposeAsync) in a finally block; in fact, this is how the using statement is translated by the compiler.
Bold Stump
Не надо отсылать к книжкам по поводу тривиальных вопросов - это никому не помогает.

Ага, знакомая картина - думать некогда, пилить надо. Есть предположение, что изначальный разраб, который был нубом, был им примерно по той же причине.
...
Рейтинг: 0 / 0
29.04.2021, 09:21
    #40067080
winsky!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump

Зачем мне читать какого-то Рихтера

действительно
...
Рейтинг: 0 / 0
29.04.2021, 10:41
    #40067107
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump
MS не зря сделали SqlCommand имплементирующим IDisposable. На это у них была какая-то причина

Вообще-то есть исключения. Например, HttpClient или Task, но это результат либо легаси, либо изначальной ошибки дизайна - в MS тоже люди работают.
...
Рейтинг: 0 / 0
29.04.2021, 12:40
    #40067178
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Bold Stump
Сон Веры Павловны
Bold Stump,

Почитайте у Рихтера про имплементацию IDisposable в сочетании с финализатором.


Зачем мне читать какого-то Рихтера
...а становиться знатоком внутренностей .NET мне заработать на жизнь не поможет.


Не останавливайтесь!
...
Рейтинг: 0 / 0
29.04.2021, 12:52
    #40067189
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Ролг Хупин
Не останавливайтесь!

Возможно, чел зарабатывает 7-8 К в месяц на nodejs или react, а тут его таском на дотнете нагрузили.
...
Рейтинг: 0 / 0
29.04.2021, 12:54
    #40067190
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
Бывал я в Чебаркуле, природа озера, ляпота....
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using() / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]