请教一个线程退出的问题。(41分)

  • 主题发起人 主题发起人 like_ask
  • 开始时间 开始时间
L

like_ask

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如下代码的线程类中,
我连续执行了六个线程,并分别查询完完成后,为什么在关闭程序的时候报错
可能我的分少点,请大家不要介意。我只有这么多。
system error :code 1400
为什么呢
unit QuerThrdd;
interface
uses
Classes,adodb,windows,Messages;
type
TQueryThreadd=class(TThread)
private
fQuery:tADOQuery;
protected
procedure Execute;override;
//procedure FreeOnTerminate;override;
public
constructor Create(Suspended:Boolean;Query:TADOQuery);
end;
implementation
uses askunit;
constructor
TQueryThreadd.Create(Suspended:Boolean;Query:TADOQuery);
begin
inherited Create(Suspended);
fQuery:=Query;
FreeOnTerminate:=True;

end;
//
procedure TQueryThreadd.Execute;
begin

fQuery.Open;
sendmessage(FRMASK.Handle,SX_MyMessage,4,4);

end;

end.
 
我看是你的Query惹得祸,因为你现在是6个线程同时访问主线程的对象,而这个对象访问的时候并没有进行同步处理。
 
您看我应该怎么作呢,谢谢指点
 
没有做同步处理 ,呵呵 .
 
改成动态创建Query试试。
 
是Tadoquery,
还有 TO:sefeng1982
朋友,,怎么作同步处理。
 
http://www.2ccc.com/article.asp?articleid=3740
这是我做的线程同步的例子,你可以参考参考.
 
6个线程就在主线程创建6个Query,每个线程传入一个Query,这应该就没有同步问题了!大家共用主线程的Query是不行的,除非你的线程有先后顺序之分!
 
谢谢大家的回答,可能高手没有回答的原因是没有找到问题,
其实就是没有问题,上述代码和调用代码一点问题没有,只不过是其它的一个三方有点冲突,问题已经解决了。谢谢大家,飞鹰,接分,虽然不多。
 

Similar threads

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