RemoteDataModule释放问题,高手请进!(300分)

  • 主题发起人 主题发起人 船歌
  • 开始时间 开始时间

船歌

Unregistered / Unconfirmed
GUEST, unregistred user!
COM高手请进!
应用程序中,加入RemoteDataModule,参数如下:Multiple Instance,Neutral的线程模式,Windows2000 高级服务版的环境,SQL Server 2000企业版。
在远程数据模块的OnCreate的事件中,把远程数据模块的自身(即Self)加到全局的一个TObjectList中,在OnDestroy事件中,把远程数据模块的自身(即Self)从全局的TObjectList中删除。这样,从TObjectList对象中,可以取得所有的远程数据模块的信息。现在问题在于,如果在应用程序中,把所有的TObjectList对象都Free掉,COM资源并不得有释放,表现为:关闭应用程序时,跳出一个对话框说:“这个程序依然有活动的COM对象,一个或更多的客户引用这些对象,所以手工关闭可能导至这个客户程序运行失败。确信要关闭吗?”如果客户端自己关闭,引起对象的数据模块被Destroy,则没有这个现象。
怎么回事的?
 
我也用这个,但没有手工释放过的啊。。。自动就释放了。
 
既然客户程序正在运行,当然不能关闭了
 
显然不应该在服务器端Free数据模块对象,它是由客户端连接自动产生,
断开自动销毁。
 
如果要强行释放它呢?
 
Com对象是引用计数的,你干嘛要自己在服务器端手动去控制它的生存?
在win2000下面你可以通过设置属性(组件服务)来控制Com+的运行方式。
你要说说,你到底要做什么?
 
先引用ActiveX单元。
然后用
CoDisconnectObject(RemoteDataModule.ComObject,0);
RemoteDataModule是你的远程数据模块!
 
多人接受答案了。
 
后退
顶部