问题是这样的,我写了个com组件,其中动态创建了adostoreproc和adoconnetion还有clientsocket,socket还有connection都是长连接所以我在interface下声明了相应的变量,然后如下这样
initialization(创建)
  TAutoObjectFactory.Create(ComServer, TDataSwitch, Class_DataSwitch,
    ciMultiInstance, tmApartment);
  mySocket :=TClientSocket.Create(nil);
  timerCnt := TTimer.Create(nil);
  myAdoCon := TADOConnection.Create(nil);
  myAdoSto := TADOStoredProc.Create(nil);finalization(销毁)
  mySocket.Free;
  timerCnt.Free;
  myAdoCon.Free;
  myAdoSto.Free;但是我在使用这个组件作了个测试程序和serversocket通信中发现一个问题,当我第一次连接Serversocket的时后很正常,同时我也发现window任务管理器中多了个DLLHOST。exe的进程,可当我利用在关闭程序(组件里面没写destroy(),因为看到有这个fin……在)用了组件里面自带的free方法后第2次打开程序控制组件的clientsocket和serversocket去连接的时候就报interface 不支持的错,而当我关掉程序同时杀掉DLLHOST.exe这个进程后再连接socket就没错误。请各位大大帮我看看关于和serversocket连接,我做的组件对外提供了个active属性,设置这个属性为真就对clientsocket进行相关设置然后使其的active为true

解决方案 »

  1.   

    up
    up
    大家帮我看看咯!!!
      

  2.   

    唉,看来是没人帮解决了痛苦ing
    继续顶吧
      

  3.   

    这。难。。学习ing 。。帮你顶个。。~!
      

  4.   


    finalization(销毁)
      mySocket.Free;
      timerCnt.Free;
      myAdoCon.Free; //这个有问题
      myAdoSto.Free; //或者这个使得COM+没有释放完全,你第二次用“不支持”
      

  5.   

    不太懂楼上所说的,我都free了,还有你所谓的第二次用……不懂,可以解释清楚么?
      

  6.   

    请问楼上的大大,接口该如何释放?
    free?那我在测试程序用了,可是dllhost问题仍然存在,
      

  7.   

    up,等了这么长时间还没人看?
    伤心啊
    继续up