Re: COM объект и Finalize
От: TK Лес кывт.рф
Дата: 14.07.09 07:13
Оценка:
Здравствуйте, DragonFire, Вы писали:


DF>Написал класс — оболочку для COM-объекта. Все работает замечательно, вот только при удалении класса-оболочки мне необходимо сделать некоторые действия с COM-объектом, точнее послать ему сообщения о завершении.

DF>Я создаю WIN — формочку и создаю экземпляр оболочки. При закрытии формы должен вызываться диструктор этой оболочки и посылаться сообщение COM-объекту. На деле же, в методе Finalize COM объект уже очищен — независимо от того CriticalFinalizerObject у меня оболочка или нет. Даже через диспетчер задач видно что COM-объект удаляется, когда закрывается формочка, без ожидания вызова дистркутора оболочки.

Все правильно — CriticalFinalizerObject вызывается последним. на данном этапе MyCOMObject был уже финализирован.
Вам надо в вашей "оболочке" делать Marshal.GetIUnknownForObject и хранить его — в этом случае, будет гарантия того, что объект не "умрет" раньше времени.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.