是用bde联的吗,如果是多线程的话,也要保证每一个connectioned有唯一的一个session。
解决方案 »
- quick report版面设计的问题?
- 如何在另一个程序的菜单中增加一个自己定义的菜单??
- 今天跟喜欢的妹妹表白了......大家给支个招!
- 用一个QUERY类的控件查出来的数据,怎样用SQL再查呢或再用一个QUERY查也可以
- 能否在一个程序中调用另一个应用程序,并使类似一个子窗体?
- 如何实现文件的COPY命令急!!!
- 实时串口通讯的问题!有兴趣吗?
- image1.canvas.ellipse(),画椭圆
- WINDOWS中字模的提取??
- ListView 使用中的out of index的问题
- 请指教,高手请帮忙
- ExpressBar 4 question! how to create a dxBar with a dxBarEdit in it by code at runtime ? thanku........................100.fen
另外不知道你如何处理查询结果,反正就是“不要在工作线程中用datasource,dbgird什么的显示数据”,我这是不是罗嗦了……祝好运!
如:
Constructor TSourceSync.Create(qry1,qry2,qry3:Tadoquery;con:Tadoconnection);
begin
treadCon;=con;
query1.connection:=treadCon //这句会出错
...
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var S : SearchThread;
begin
S := SearchThread.Create(true);
showmessage('ok');
if s.ifQ(ADOQuery1) then
s.Suspend;
end;
可是“ok”能够正常出现(没敢运行太长时间),也是在设计时做的连接。线程里就是一个普通的查询。没发现什么问题。
你有线程查看的工具吗,看一看,是不是只多了一个线程。
线程同步的问题
同意 yansea(思宏)
begin
{ Place thread code here }
if Q<>nil then begin
Q.Close;
Q.sql.text := 'select * from zonghe';
Q.Prepared := true;
Q.Open;
end;
end;//Q是私有变量; Q:TADOQuery;function SearchThread.ifQ(Query: TADOQuery): boolean;
begin
result := false;
Q := Query;
result := true;
end; //复值;
Constructor TSourceSync.Create(qry1,qry2,qry3:Tadoquery;con:Tadoconnection);
//前句应写成
//Constructor TSourceSync.Create(Con:TAdoConnection);
//adoquery控件在TSourceSync的构造函数中自动创建
begin
treadCon;=con;
query1.connection:=treadCon;
//以上这句中的query1是不是类TSourceSync的私有变量,
//如果是应该初始化
//query1:=tadoquery.create(con);
//query1.connection:=con
//不要threadcon做中间变量
...
end;
1.如果你使用了BDE,请使用TSession 和TDatabase来管理每一个连接.
2.如果你使用了ADO,请使用TADOConnection来管理每一个连接.PS:线程不能太多(NT下至多16),否则得不偿失.