ADOConnection 的问题(300分)

  • 主题发起人 主题发起人 Wysywyg
  • 开始时间 开始时间
W

Wysywyg

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是我给ADOConnection.ConnectionString复的值:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:
/BorlandShared/Data/dbdemos.mdb;Persist Security Info=False
我用Process Viewer观察了一下ADOConnection在联结和断开
时进程中所含线程数.
1.开始时Connected := false Threads=1
2.Connected := True Threads = 8
3.Connected := False Threads=2
那位大侠能告诉我这是为什么?
难道这是ADO的Bug?
 
那你多次
connect
disconnect
connect
disconnect
线称会不会越来越多,如果不会,那就没问题,留下来的可能是为了性能
如果越来越多,那就有问题
 
线程数跟你调用的次数有关
 
现在问题就来了,如果令
ADOConnection.Connected := False;
ADOConnection.Free;
你再用PViewer看看,Threads<>1 而是 2!
就是说,ADOConnection在Free了以后还会有一个
线程遗留在系统里!
这会不会造成内存漏呢?
如果一个delphi做的Active控件中含有ADOConnection
它会不会对调用程序的正确退出造成影响?比如VC, VB, PB, Delphi?
希望大家一起来找找原因.
 
为什么没人继续呢?
BTW:怎样获得进程中所有线程并强行杀掉某一个?
 
剩下的会不会是ADO的"缓冲池"? 因为一个ADO连接上之后,如果应用"缓冲池"
技术,其他的ADO连接可以共享这个连接,以加快速度. 连接断开后,也不会清空
这个池子.

不过不知道是否就是这个原因. 估计是.
 
>会不会是ADO的"缓冲池"?
nod...
但现在我把ADOConnection给Free了,怎么还有两个线程啊?
 
>>但现在我把ADOConnection给Free了,怎么还有两个线程啊?
缓冲池是整个系统公用的,windows要留着给别人用.

(其实我也是瞎猜)
 
你free后再创建一个,再free之,再创建之,再free之,
线称会不会越来越多,还是固定下来2个?

要是固定下来2个就不管它了,
要是越来越多那可能是bug
 
不用瞎猜了,不可能会越来越多的!
ADO自己应该会形成连接池的!
你多用几个ADOConnections同时连上再断开,线程数可能还要多呢!
 
各位大虾:
我已经试过了,线程数目不会继续增加,始终保持为1
而且用几个ADOConnections同时连上在断开,
线程数也是1个,不会增加
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
977
import
I
后退
顶部