问题是这样的,我写了个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
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
up
大家帮我看看咯!!!
继续顶吧
finalization(销毁)
mySocket.Free;
timerCnt.Free;
myAdoCon.Free; //这个有问题
myAdoSto.Free; //或者这个使得COM+没有释放完全,你第二次用“不支持”
free?那我在测试程序用了,可是dllhost问题仍然存在,
伤心啊
继续up