Корректно отработать завершение своего интерфейса
От: Аноним  
Дата: 05.02.10 22:02
Оценка:
Может быть, не сразу смогу внятно объяснить т.к. тема для меня новая и я в боевом режиме изучаю использование интерфейсов. Проблема в следующем: накатал dll, которая поставляет нужный мне интерфейс. В нем осуществляется вызов обычной VCL-формы. В стороннем приложении вызов моего интерфейса производится по CreateObject("bla-bla"). Затем вызов метода интерфейса приводит к созданию формы (немодальной), осуществляющей некоторые действия, и которая может некоторое время висеть сама по себе. Но проблема в том, что вызывающее приложение может завершиться, пока моя форма присутствует. В этом случае вываливается AV, впрочем, понятно почему. Непонятно, как с этим бороться? т.к. я еще не слишком глубоко постиг механизм всей этой кухни...

P.S. Мой интерфейс — наследник от IDispatch, инкапсулируется классом так:
 IControlWindow = interface(IDispatch)
    ['{67642A6A-7E5E-41E2-A2E3-ECF9D03503C0}']
    procedure ShowControlWindow(iType: Integer; iIndex: Integer); safecall;
  end;
  IControlWindowDisp = dispinterface
    ['{67642A6A-7E5E-41E2-A2E3-ECF9D03503C0}']
    procedure ShowControlWindow(iType: Integer; iIndex: Integer); dispid 201;
  end;
 TControlWindow = class(TAutoObject, IControlWindow)
  procedure ShowControlWindow(iType: Integer; iIndex: Integer); safecall;
 end;
Что, где проверить\отловить надо, чтобы успеть уничтожить форму в момент завершения вызывающего приложения?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.