|
|
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Для удаления объекта класса достаточно ли будет ............................... Set g_oADO = Nothing объявлен клас так Public g_oADO As New CADO ---------------------------------- когда вообще идет обращение к методу класса ? Private Sub Class_Terminate() ---------------------------------- А вообще кто знает есть ли какой-то менеджер объектов мониторинга их в памяти ..под Access....удаления и оптимизация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 17:56:42 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Про мониторинг объектов не скажу. Set g_oADO = Nothing - просьба удалить объект, access сделает это, когда ему удобно. Для public это единственный способ. Если объект используется в одном модуле, лучше объявить его private. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 18:11:12 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
MLeonПро мониторинг объектов не скажу. Set g_oADO = Nothing - просьба удалить объект, access сделает это, когда ему удобно. Для public это единственный способ. Если объект используется в одном модуле, лучше объявить его private. g_oADO дело в том в пределах этого класса все работает, ..... если вызвать любой public метод класса как вы рекомендуете , тогда идет обращение к Private Sub Class_Initialize() Я хочу знать Set g_oADO = Nothing выполняет ли вызов Class_Terminate ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 18:15:16 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Public g_oADO As New CADO CADO - это собственно клас. g_oADO - есть собственно объект-клас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 18:17:23 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Не знаю, будет ли моя реплика к месту, но: Если описать нечто As New, то потом трудно превратить его в Nothing. Поэтому вместо Dim X As New Y лучше писать Dim X As Y Set X = New Y ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 18:30:30 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
А потому, лучше иметь в классе явно вызываемый метод Close, который проведёт очистку приватных переменных. В этом случае запоздалый Terminate вызывает меньше проблем. Это же относится и к стандартным классам, типа Recordset ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 18:51:48 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Владимир СанычНе знаю, будет ли моя реплика к месту, но: Если описать нечто As New, то потом трудно превратить его в Nothing. Поэтому вместо Dim X As New Y лучше писать Dim X As Y Set X = New Y УГУ не догадался проверить .счас попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 19:11:17 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Alexey ShА потому, лучше иметь в классе явно вызываемый метод Close, который проведёт очистку приватных переменных. В этом случае запоздалый Terminate вызывает меньше проблем. Это же относится и к стандартным классам, типа Recordset Так как Вы советуете метод Close класса вызовет еще раз Class_Initialize. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 19:13:38 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Никакой мистики, обычный юзерский метод Close сделает только то что в нём написано. Инициализация произойдёт после присваивания Nothing и последующего обращения к свойтву/методу. Что тут рассуждать, лучше попробовать самому и посмотреть порядок вызовов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 19:17:43 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Alexey ShНикакой мистики, обычный юзерский метод Close сделает только то что в нём написано. Инициализация произойдёт после присваивания Nothing и последующего обращения к свойтву/методу. Что тут рассуждать, лучше попробовать самому и посмотреть порядок вызовов не фига еще раз проверил........при обращении к методам класса все равно первым вызывается метод Private Sub Class_Initialize Вот когда срабатывает Class_Terminate так и не удалось ....? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 19:23:04 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Class_Terminate вызовется при обнулении счётчика ссылок на экземпляр класса. Dim X As Y Set X = New Y X.method ..... Set X=Nothing вот здесь и вызовется Class_Terminate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 19:35:52 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Alexey ShClass_Terminate вызовется при обнулении счётчика ссылок на экземпляр класса.Совершенно верно! Alexey Sh Dim X As Y Set X = New Y X.method ..... Set X=Nothing вот здесь и вызовется Class_TerminateА вот это - не всегда. Например, если вместо Код: plaintext Код: plaintext Так что ищите где ещё используется переменная g_oADO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 10:53:36 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Если другой класс создает этот и возвращает его вам в переменную, то nothing этого класса сам класс не уничтожит. Если класс создал другие классы, то nothing то же не сработает пока не будут уничтожены все вызванные экземпляры; сработает после уничтожения вызванных классов - тогда и будет вызвано событие terminate. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 12:56:49 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
MVNЕсли другой класс создает этот и возвращает его вам в переменную, то nothing этого класса сам класс не уничтожит. Если класс создал другие классы, то nothing то же не сработает пока не будут уничтожены все вызванные экземпляры; сработает после уничтожения вызванных классов - тогда и будет вызвано событие terminate. Уточните покажите пример плиз......... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 15:46:16 |
|
||
|
Работа с классами
|
|||
|---|---|---|---|
|
#18+
Dmitry Biryukov Alexey ShClass_Terminate вызовется при обнулении счётчика ссылок на экземпляр класса.Совершенно верно! И это весьма логично, если вдуматься, т.к. Class_Initialize также срабатывает ровно один раз при создании экземпляра, а не при создании каждой ссылки на него :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 16:42:23 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1499&tid=1669354]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 301ms |

| 0 / 0 |
