|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Дали работу над старым приложением. Это сервис. Работает круглосуточно, ночью перезагружается вместе с машиной. Грузит в себя данные, формирует из них очередь, суёт переданные издалека созданные и сконфигурированные SqlCommand инстанции в поле Command каждого объекта в очереди, выполняет их и очищает очередь. Естественно, команды в таком дизайне не завёрнуты в using(). После очистки очереди они, как я понимаю, магически не освободят неуправляемые ресурсы. Достаточно ли просто вызвать на каждую из них QueueItemInstance.Command.Dispose() в try/catch блоке и проглотить исключение если его что-то бросит, или тут нужно что-то другое, типа имплементировать IDisposable на QueueItem - объекте из которых формируется очередь и т д и т п? Премного благодарен! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 15:45 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Да, вот еще: обработка очереди происходит, естественно, в foreach(), так что даже если я буду звать QueueItemInstance.Dispose(), то не смогу QueueItemInstance = null, поэтому сомневаюсь в целесообразности имплементации IDisposable на QueueItem. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 16:17 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump, У вас есть подозрение, что не правильно релизованы финализаторы у инструментов? Имхо параноя, если все работает годами и не падает, не стоит туда соваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 16:52 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Где-то в степи Bold Stump, У вас есть подозрение, что не правильно релизованы финализаторы у инструментов? Имхо параноя, если все работает годами и не падает, не стоит туда соваться. Нет, ничего подобного! Просто в очередь суётся некий класс, своя моделька, в котором есть поле SqlCommand Command. Прошлись foreach() по очереди, для каждого элемента сделали QueueItemInstance.Command.ExecuteNonQuery() и после цикла вызвали queue.Clear() Естественно, моделькам будет вызван деструктор, но класс модельки QueueItem не дитё IDisposable и не развополщает эту Command, следовательно на неё не будет вызван Dispose(). Понятно объясняю? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 17:25 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump, Почитайте у Рихтера про имплементацию IDisposable в сочетании с финализатором. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 17:30 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump, Там защита от дурака должна быть ( образно) вдруг разраб забыл using поставить, тихо мирно умрет.. слушайте Сон Веры Павловны он плохого не посоветует... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 17:38 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Сон Веры Павловны Bold Stump, Почитайте у Рихтера про имплементацию IDisposable в сочетании с финализатором. Зачем мне читать какого-то Рихтера, когда все детали имплементации есть в MSDN? Я не спрашиваю, как это имплементировать. Я прошу совета, можно ли просто вызвать Dispose на саму инстанцию SqlConnection, потому что самому мне никогда не приходилось это делать: я не посылаю команды в пеше путешествие через всё приложение, а создаю их в using() где и когда мне нужно. Я не хочу перелопачивать всё их приложение, поэтому ищу ответа на ранее поставленный вопрос, а зачитываться книжками мне некогда. Не надо отсылать к книжкам по поводу тривиальных вопросов - это никому не помогает. Ситуация специфическая, потому что изначальный разраб был нубом (и остался, по правде говоря), и врядли она когда-нибудь для меня повторится, а становиться знатоком внутренностей .NET мне заработать на жизнь не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 17:39 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Где-то в степи Bold Stump, Там защита от дурака должна быть ( образно) вдруг разраб забыл using поставить, тихо мирно умрет.. слушайте Сон Веры Павловны он плохого не посоветует... Где гарантия? MS не зря сделали SqlCommand имплементирующим IDisposable. На это у них была какая-то причина, и не доверять им у меня нет никаких оснований. Значит, защиты от дурака они не предусмотрели. Что-то должно утекать, если не развоплощать SqlCommand как следует. Не знаю что и не хочу знать, но раз он IDisposable, то уничтожить объект нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 17:42 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump, да забейте, все ведь работает - all die вот прикиньте, сделаете подтиралку за собой, чето сбойнет, вы крайний, лишат премии, обьявят выговор, порицание, поставят на вид, от вас уйдет близкий человек - как от неумехи, ваша кошка будет призирать вас за туфотовый код, дерпессия, смена работы, запой, клошаринг, бачки, теплотрасса - и все за ... using, оно вам надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 18:11 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Где-то в степи Bold Stump, да забейте, все ведь работает - all die убедившись, что ответа не добиться, уже заменил передачу по эстафете команды на её текст. и Вы забейте! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 18:19 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Где-то в степи Bold Stump, да забейте, все ведь работает - all die вот прикиньте, сделаете подтиралку за собой, чето сбойнет, вы крайний, лишат премии, обьявят выговор, порицание, поставят на вид, от вас уйдет близкий человек - как от неумехи, ваша кошка будет призирать вас за туфотовый код, дерпессия, смена работы, запой, клошаринг, бачки, теплотрасса - и все за ... using, оно вам надо? а потом все удивляются короне ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 18:33 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump, вообще что мешает поставить обыкновенный using, там надо с try cath - если есть разобраться и с системой отката трансакции если есть, что бы не вызвать rollback на закомиченную трансакцию, а то что грохнется в usinge забейте, там компилятор в секции final всеравно будет тупо диспозить, что ж такие вещи то нафорум тащить? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 18:39 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump а потом все удивляются короне гыгы конец рабочего европейского дня: Мы писали. Мы писали. Наши пальчики устали. ( назидательно так) Мы немножко попиз...ём. И опять писать начнём ( уверенно и весело так) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 18:45 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Архитектура огонь. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 19:03 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
fkthat Архитектура огонь. Вот это я понемаю файловер ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 22:43 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump убедившись, что ответа не добиться, уже заменил передачу по эстафете команды на её текст. и Вы забейте! Слава Ктулху, что дошло, что такие объекты, как SqlCommand или SqlConnection просто не предназначены для того, чтобы положить их куда-то на неделю, а потом достать и использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 23:55 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
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 Не надо отсылать к книжкам по поводу тривиальных вопросов - это никому не помогает. Ага, знакомая картина - думать некогда, пилить надо. Есть предположение, что изначальный разраб, который был нубом, был им примерно по той же причине. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 06:50 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump Зачем мне читать какого-то Рихтера действительно ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 09:21 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump MS не зря сделали SqlCommand имплементирующим IDisposable. На это у них была какая-то причина Вообще-то есть исключения. Например, HttpClient или Task, но это результат либо легаси, либо изначальной ошибки дизайна - в MS тоже люди работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 10:41 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Bold Stump Сон Веры Павловны Bold Stump, Почитайте у Рихтера про имплементацию IDisposable в сочетании с финализатором. Зачем мне читать какого-то Рихтера ...а становиться знатоком внутренностей .NET мне заработать на жизнь не поможет. Не останавливайтесь! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 12:40 |
|
Правильно развоплотить объект, имплементирующий IDisposable, но не завёрнутый в using()
|
|||
---|---|---|---|
#18+
Ролг Хупин Не останавливайтесь! Возможно, чел зарабатывает 7-8 К в месяц на nodejs или react, а тут его таском на дотнете нагрузили. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 12:52 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1398306]: |
0ms |
get settings: |
14ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
67ms |
get topic data: |
3ms |
get first new msg: |
5ms |
get forum data: |
1ms |
get page messages: |
390ms |
get tp. blocked users: |
0ms |
others: | 312ms |
total: | 799ms |
0 / 0 |