怎样强制终止 进程外组件!(100分)

  • 主题发起人 主题发起人 zmxjh
  • 开始时间 开始时间
Z

zmxjh

Unregistered / Unconfirmed
GUEST, unregistred user!
由于在 进程外组件 中有大量的耗时操作,这造成在关闭客户程序时,客户程序中建立的 进程外组件将无法 跟随客户程序一起 退出。

我尝试调用 组件 中的 自编的方法来终止,但调用的方法跟本不执行,直到那个耗时的操作完成才执行!不知道是什么原因。
代码如下:
unit uRackAgent;
{$WARN SYMBOL_PLATFORM OFF}
interface

uses
Windows, ActiveX, Classes, ComObj, WSElfServerEx_TLB, StdVcl

type
TRackAgent = class(TTypedComObject, IRackAgent)
protected
function Execute: HResult; stdcall;
function Terminate: HResult; stdcall;
private
end;

implementation

uses 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跟本不执行!
 
后退
顶部