这个多线程有什么问题??(100分)

  • 主题发起人 主题发起人 hpbj
  • 开始时间 开始时间
H

hpbj

Unregistered / Unconfirmed
GUEST, unregistred user!
写了一个查询程序,在进行查询时,不能同时操作程序界面。
想引入多线程,程序如下,但进行查询时程序报错。
如何进行修改?
var //全局定义
ThreadID:DWord;
hThread:Thandle;
procedure TForm1.Button1Click(Sender: TObject);
begin
hThread:=CreateThread(nil,0,@TForm1.shs,nil,0,ThreadID);
end;

procedure TForm1.shs;
var i:integer;
begin
ADOQuery1.SQL.Clear;
 ....
end;
点击按钮后程序报错。
 
建议多看一点多线程方面的书。
 
看不大明白, 呵呵, 最好自己定义一个线程类,
 
自己定义一个线程
 
搜索一下。。。。会有很多范例,看看先。。。
 
看过了,都是用DELPHI自带的
 
DELPHI开发人员指南上有很多例子,
而且不要直接在DELPHI的程序中使用
CreateThread。
 
线程同步问题,最好能出示错误信息别人才好一起分析啊
 
内存报错
 
错误很正常,我看你的代码就知道你编译一定要出这个错![:D]
 
张大师告诉我怎么改呀!!
谢谢!!
 
开始学多线程用线程类把
TThread,
在新建里面选Thread单元 就生成了一个框夹,再看看书,就可以写代码了,
ADO要加初始化COM,否则要出问题,
 
不要直接使用CreateThread函数,从TThread继承写一个自己的线程类来操作。
Override Execute方法即可.
 
看demo里面threads吧
 
注意不能有两个线成同时访问vcl控件
function shs: LongInt;
stdcall;
begin
Form1.ADOQuery1.SQL.Clear;
Form1.caption:='ok';
Result := 0;
end;

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
var //全局定义
ThreadID:DWord;
hThread:Thandle;
begin
hThread:=CreateThread(nil,0,@shs,nil,0,ThreadID);
end;

end.
 

Similar threads

S
回复
0
查看
896
SUNSTONE的Delphi笔记
S
S
回复
0
查看
873
SUNSTONE的Delphi笔记
S
后退
顶部