Re[9]: COM объект и Finalize
От: DragonFire Россия  
Дата: 15.07.09 16:06
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, DragonFire, Вы писали:


DF>>>Так ведь, когда до финализатора дело доходит, COM объекта уже не существует. Или вызов этот предотвратит его удаление?


TK>Как это не существует? GetIUnknownForObject добавляет ссылку к объекту. Следовательно, сам объект будет жить пока эту ссылку не отпустят.


DF>>Да и к тому же если пытатся вызвать этот метод в финализоторе, вылазит ошибка:

DF>>The application called an interface that was marshalled for a different thread.

TK>GetIUnknownForObject вызывается из STA потока?


Да, но сборщик мусора работает всегда в отдельном потоке... Тем более, как я уже говорил, вызов GetIUnknownForObject и сохранение ссылки ничего не дает — объект умирает когда вызывается финалайз... Через диспетчер задач просто видно что COM — объект завершается, если в финалайз брейкпойнт поставить...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.