怎样强制终止 进程外组件!

zmxjh 2003-07-11 01:26:22
由于在 进程外组件 中有大量的耗时操作,这造成在关闭客户程序时,客户程序中建立的 进程外组件将无法 跟随客户程序一起 退出。

我尝试调用 组件 中的 自编的方法来终止,但调用的方法跟本不执行,直到那个耗时的操作完成才执行!不知道是什么原因。
代码如下:
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跟本不执行!
...全文
44 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzykjh 2003-07-11
  • 打赏
  • 举报
回复
Application.Terminate

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧