- Код: Выделить всё
ActiveX Control
класс1(1)
Класс2(1)
Класс2(2)
класс1(2)
Класс2(1)
Класс2(2)
Класс 2 так же хранит ссылку на содержащий его экземпляр класса1. Чтобы уничтожить экземпляр класса1, генерирую в нем событие, по которому все принадлежащие ему экземпляры класса2 уничтожают ссылку, а из коллекции контрола удаляю евойным методом. По идее все ссылки на класс удалены, однако Class_Terminate() не происходит. Значит что-то где-то осталось висеть. Все добавления и удаления ссылок из коллекции контрола делаю в самом классе1 при вызове публичного метода типа так:
- Код: Выделить всё
Control:
Sub CreateClass1()
Dim c as New Class1
c.Create Me
End sub
Class1:
Dim lControl
Dim lClasses2 as Collection
Public Sub Create(pControl)
Set lControl = pControl
lControl.Class1Collection.Add Me, "p" & ObjPtr(Me)
End Sub
Private Sub Destroy()
lControl.Class1Collection.Remove "p" & ObjPtr(Me)
RaiseEvent Destroy 'для экземпляров класса2
End Sub
Private Sub Class_Terminate
Set lClasses2 = Nothing
Set lControl = Nothing
End Sub