Здравствуйте, TK, Вы писали:
TK>Все правильно — CriticalFinalizerObject вызывается последним. на данном этапе MyCOMObject был уже финализирован.
TK>Вам надо в вашей "оболочке" делать Marshal.GetIUnknownForObject и хранить его — в этом случае, будет гарантия того, что объект не "умрет" раньше времени.
Теперь я пишу так:
public class MyClass : CriticalFinalizerObject
{
private MyCOMObject _Application;
private IntPrt _Pointer;
public MyClass ()
{
_Application = new MyCOMObject ();
_Pointer = Marshal.GetIUnknownForObject(_Application);
}
~MyClass ()
{
//тут в COM объект должно посылатсья сообщение, но вываливается исключение
//"COM object that has been separated from its underlying RCW cannot be used."
_Application.Do("End");
Marshal.Release(_Pointer);
}
Та же самая ошибка вылезает... Никакого эффекта...