由于在 进程外组件 中有大量的耗时操作,这造成在关闭客户程序时,客户程序中建立的 进程外组件将无法 跟随客户程序一起 退出。我尝试调用 组件 中的 自编的方法来终止,但调用的方法跟本不执行,直到那个耗时的操作完成才执行!不知道是什么原因。
代码如下:
unit uRackAgent;
{$WARN SYMBOL_PLATFORM OFF}
interfaceuses
  Windows, ActiveX, Classes, ComObj, WSElfServerEx_TLB, StdVcltype
  TRackAgent = class(TTypedComObject, IRackAgent)
  protected
    function Execute: HResult; stdcall;
    function Terminate: HResult; stdcall;
  private
  end;implementationuses ComServ,SysUtils;function TRackAgent.Execute:HResult;
begin
  ......
  {一些很耗时的操作}
  WaitForSingleObject(frmMain.hEvent,INFINITE);//为了实现同步...
  ...........
end;function TRackAgent.Terminate: HResult;
begin
     ShowMessage('Terminate');
     Result:=S_OK;
end;initialization
  TTypedComObjectFactory.Create(ComServer, TRackAgent, Class_RackAgent,
    ciMultiInstance, tmApartment);
end.当我调用Execute还没返回,就调用Terminate时,Terminate跟本不执行!