在多线程里使用ADO的问题?(100分)

  • 主题发起人 主题发起人 xcjp
  • 开始时间 开始时间
X

xcjp

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在多线程里使用ADO对象啊?
怎么在工作者线程里使用一句最简单的赋值语句都会发生内存错误啊?
procedure TWorkThread.Execute;
begin
connection:=TADOConnection.Create(application);
connection.LoginPrompt:=false;
end;
请高手指教!1
 
用synchonize,我都是这么用的,没问题。
其实没必要每个Thread中用一个connection,
只要在datamodule中有一个connection,
每个thread中通过synchonize从datamodule
得到tadoquery,使用的时候也用synchonize。

我不知道是否还有更好的办法,至少我用这
种方法还没出过什么问题。
 
还注意 ADO 是OLE对象,需要初始化.
OleInitialize(0);
try
//Add your code here.
finally
OleUninitialize
end;
 
这样在线程的
protected 里写一个创建ado的方法,
在execute 里用synchonize(方法名)来调用
 
如果用synchronize的话还不如别在线程中使用ado呢。 因为synchronize本来就在主进程里
运行的, 不用线程还高效那么一点点呢(少了线程切换, 一般要5-30个时钟周期)
 
Pearl.:
呵呵,问题就是,需要在多线程中写数据怎么办。
用多线程,一般而言,肯定不是专门为了写数据,
写数据只是其中一步罢了。
我是很想知道别的不用synchonize多线程中写数
据库怎么写的。
 
接受答案了.
 
后退
顶部