|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
melihron, В последнем примере уже появились переменные) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 11:25 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
В общем нифига рекордсет не уничтожается. И существует за пределами блока With. Поэтому по теме топика нужно выделять его отдельно, закрывать и грохать отдельно. Надеюсь это и было главным вопросом) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 11:47 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
Сергей Лалов Остаётся поверить майкрософту на слово, что внутри блока with происходит уничтожение ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 11:52 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
Сергей Лалов В общем нифига рекордсет не уничтожается. И существует за пределами блока With. Поэтому по теме топика нужно выделять его отдельно, закрывать и грохать отдельно. Надеюсь это и было главным вопросом) А с какого перепугу он rs должен уничтожиться? Если существует хоть одна ссылка на объект.(это объектная переменная rs). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 12:03 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
Сергей Лалов Код: vbnet 1. 2. 3. 4. 5. 6.
Вот здесь после присвоения, область видимости рекордсета простирается и за пределы блока With. И он жив. Но это потому что я объявил его в самом теле With. Хитрый вопрос. Если убрать Set , то тоже жив. ну тут естессьтно рекордсет не уничтожится, поскольку он присвоен переменной, область видимости которой вне блока With... Это как у индейцев Навахо штоли... "человек жив до тех пор, пока жив последний помнящий о нём"..... так и тут... : ) Вот у других языков высокого уровня, как си шарп, джава, специально созданы и описаны так называемые сборщики мусора, которые работают по своему расписанию и алгоритму... благодаря которым точно можно быть уверенным, что незакрытый объект уничтожится через какое-то время, если до конца работы процедуры к нему не будет обращений, и утечки памяти не будет... а здесь ... хрен знает... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 12:03 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
melihron ... а здесь ... хрен знает... Выделяй его отдельно из Dbengine как на примере чуть выше, закрывай и уничтожай. Потому что рекордсет прекрасно себя чувствует и живет после блока With. В качестве объектной переменной ссылочного типа. Потестили,убедились, приняли решение, сделали,как то так)) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 12:16 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
melihron Вот у других языков высокого уровня, как си melihron специально созданы и описаны так называемые сборщики мусора, которые работают по своему расписанию и алгоритму... melihron благодаря которым точно можно быть уверенным, что незакрытый объект уничтожится через какое-то время Ну Ну у Си всё ручками батенька ручками. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 12:23 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
Да и на шарпее с джавой не все гладко со сборщиками мусора. ТС с потоками видимо мало общался в них. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 12:26 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
ROI, Вы правы, но ссылка на объект существует даже и при With dbEngine(0)(0). OpenRecordset() Воот если бы в vba можно было написать как в том же шарпе или vb типа такого With New DbEngine(0)(0).openRecordset() То можно было бы сказать что все схлопывается на end with. А тут фиг знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 12:48 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
Сергей Лалов ROI, Вы правы, но ссылка на объект существует даже и при With dbEngine(0)(0). OpenRecordset() Воот если бы в vba можно было написать как в том же шарпе или vb типа такого With New DbEngine(0)(0).openRecordset() То можно было бы сказать что все схлопывается на end with. А тут фиг знает. Да ни какого фига. Как только вы выйдете за пределы процедуры всё схлопнется, а зачем вам эти извращения с with? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 13:10 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
ROI, Да интересный вопрос у ТС, вот реально, как проверить то, что все что написано в сигнатуре / объявлении With схлопнулось в конце блока? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 13:15 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
Сергей Лалов ..., как проверить ... Не?: (обработчик ошибок специально не добавлял) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 13:29 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
Predeclared Сергей Лалов ..., как проверить ... Не?: (обработчик ошибок специально не добавлял) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
также Recordsets.Count показывает ноль после такой конструкции: Код: vbnet 1.
ну что... вроде тогда похоже, что действительно, после выхода из области видимости, объектные переменные освобождают занятую ими память... надеюсь этого хватит) и смело можно забить на закрытие объекта внутри блока With. Нюанс только один... если рекордсет объявлять через CurrentDB (вместо DBEngine(0)(0)), то Recordsets.Count везде показывает ноль... и обратиться к рекордсету ни через CurrentDb.Recordsets(strName), ни через DBEngine(0)(0).Recordsets(strName) не получается... странно, не понятно... но разбираться в этом уже чё-то нет желания)... CurrentDB - это вроде как ссылка на DBEngine(0)(0)... вроде... но если через неё работать, я заметил, что скорость у ней меньше, а глюков больше... поэтому стараюсь с ней не связываться... Благодарю всех за помощь и участие : ) много нового узнал... тема не закрыта, если есть желание что-то по ней обсудить и поделиться опытом, всегда пажалста... : ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 15:24 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
Любителям порасшибать лоб самостоятельно и прочим нечитателям посвящаеЦЦа. БерёЦЦа библиотека типов или аналогичная, содержащая описание интерфейса IUnknown. ПишеЦЦа функция: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
, тестовый класс Class1: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
, тестовые процедуры: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51.
Тесты запускаюЦЦа, результаты в отладочном окне анализируюЦЦа поодиночке и в группе, возникает непреодолимое желание прочитать хотя бы несколько первых глав у Роджерсона. Хотя последнее вряд ли. Наслаждайтесь! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 19:29 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
Predeclared, Затестил, да, спс, работает. Из коллекции workspace (0) databases(0) он исчезает. По всей видимости и уничтожается. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 23:59 |
|
Оператор with. Нужно ли в нём закрывать созданный в нём объект?
|
|||
---|---|---|---|
#18+
ЦЦа, Знакомый акцент, встречал в топиках 15 летней давности. С Бенедиктом не общаетесь случайно? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 00:03 |
|
|
start [/forum/topic.php?fid=45&msg=39971199&tid=1610040]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 277ms |
0 / 0 |