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

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


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


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


DF>>>Да, но сборщик мусора работает всегда в отдельном потоке...


TK>>Маловероятно, что сборщик мусора делает это в STA В остальном при использовании MTA дополнительного маршаллинга COM указателей не требуется.


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


TK>>Значит вы как-то еще выгружаете объект... GetIUnknownForObject инкрементирует счетчик ссылок объекта и пока не вызван Release — сам он выгружаться не будет


DF>Ну тогда, скорее всего, COM объект умирает, когда умирает поток... Хотя поидее потом не должен умирать пока не выполнится finalize... Сам я COM не чищу нигде.

DF>Как я уже говорил — экземпляр класса (пример пара постов выше) просто создается как поле формы...

Причем сейчас создал консольное приложение — там все отлично работает. Подозреваю что косяк где-то изза вызовов Dispose и компонентной модели WinForms...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.