熟悉Com的大哥请进,讨论讨论! ( 积分: 200 )

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

zyycc

Unregistered / Unconfirmed
GUEST, unregistred user!
将问题改改,描述的简单些。

我写了一Exe型的Com,主界面为一Form,分别用Delphi写的客户程序及MSSQL的sp_OaCreate,sp_OaMethor存储过程调用Com,会出现两个Form;为何不是共享一个Form呢


(附加一问题)
如何在客户程序调用Com对象后,让Com对象驻留,象服务程序一样,不要让它的Form及公共变量频繁的载入与释放?
 
将问题改改,描述的简单些。

我写了一Exe型的Com,主界面为一Form,分别用Delphi写的客户程序及MSSQL的sp_OaCreate,sp_OaMethor存储过程调用Com,会出现两个Form;为何不是共享一个Form呢


(附加一问题)
如何在客户程序调用Com对象后,让Com对象驻留,象服务程序一样,不要让它的Form及公共变量频繁的载入与释放?
 
1.创建COM时的instancing选项用了mulitple Instace而不是single
2.COM中的共享信息要用shared property group,参考有关书本
 
To:lab01
我创建COM时的语句为:
TAutoObjectFactory.Create(ComServer, TTransMon, Class_TransMon,
ciMultiInstance, tmApartment);
为MultiInstance。用Delphi写的客户端调用没问题,用mssql调用会有多个Form。

另外,能推荐书名吗?
 
不熟悉Com的大哥我本人先回答一下问题2:

在实现Com的声明中加上
procedure Initialize; override;

procedure TTransMon.Initialize;
begin
inherited;
if SrvStatus.i = 0 then _AddRef;
end;

即手工引用一次,便驻留内存了。

在需要释放时,_Release一下。

现在只要答问题1了。
 
我觉得服务程序没有必要用Form,在Dll中用DataModule
 
兄弟,帮顶一下啊!呵呵!
 
帮你顶啊,顺便领分
 
好好,张大嘴巴接分!
 
呵呵!!!!
 
多人接受答案了。
 
后退
顶部