大家有没有碰到过这样子的情况呢。线程根本没有执行。
下面是线程内执行的部份代码,帮我看看哪有问题。procedure thAutoMsg.Execute;
var
AdoC : TADOConnection;
qryMsg : TADOQuery;
begin
FreeOnTerminate := True; AdoC := TADOConnection.Create(nil);
AdoC.ConnectionString := Main_F.conMain.ConnectionString;
AdoC.LoginPrompt := False;
AdoC.KeepConnection := True;
AdoC.CommandTimeout := 60;
AdoC.ConnectionTimeout := 60;
AdoC.Open; qryMsg := TADOQuery.Create(nil);
qryMsg.Connection := AdoC; while Main_F.btnCheckOrder17uooStop.Enabled do
begin
下面是线程内执行的部份代码,帮我看看哪有问题。procedure thAutoMsg.Execute;
var
AdoC : TADOConnection;
qryMsg : TADOQuery;
begin
FreeOnTerminate := True; AdoC := TADOConnection.Create(nil);
AdoC.ConnectionString := Main_F.conMain.ConnectionString;
AdoC.LoginPrompt := False;
AdoC.KeepConnection := True;
AdoC.CommandTimeout := 60;
AdoC.ConnectionTimeout := 60;
AdoC.Open; qryMsg := TADOQuery.Create(nil);
qryMsg.Connection := AdoC; while Main_F.btnCheckOrder17uooStop.Enabled do
begin
在xp下正常?
win7下不正常先确认是否有权限,确认是否用到了什么数据库驱动之类的。
你还是先断点单步跟一下再说了。
只有Execute的代码开不出来个啥!
还是自己跟踪一下吧!
呵呵!
如果XP下能够执行的话!
Win7下问题也不大的!
跟Execute代码关系不大!
呵呵!
1. 将AdoC : TADOConnection;定义到线程的Private里面定义
将AdoC := TADOConnection.Create(nil);放到线程的Create事件里面;2. 线程里面调用ADO访问数据库要用CoInitialize和CoUnInitialize;
调用Coinitialization要Uses Comobj;
uses Comobj;procedure thAutoMsg.Execute;
var
qryMsg : TADOQuery;
begin
FreeOnTerminate := True;
try
CoInitialize(nil);
AdoC.ConnectionString := Main_F.conMain.ConnectionString;
AdoC.LoginPrompt := False;
AdoC.KeepConnection := True;
AdoC.CommandTimeout := 60;
AdoC.ConnectionTimeout := 60;
AdoC.Open; qryMsg := TADOQuery.Create(nil);
qryMsg.Connection := AdoC; while Main_F.btnCheckOrder17uooStop.Enabled do
begin
...
end; finally
CoUnInitialize;
end;
end;
var
AdoC : TADOConnection;
qryMsg : TADOQuery;
begin
FreeOnTerminate := True;
AdoC := TADOConnection.Create(nil);
AdoC.ConnectionString := Main_F.conMain.ConnectionString; //这一句有问题,用一个普通的String字符串来赋值就可以了,用.ConnectionString属性就是不行。
AdoC.LoginPrompt := False;
AdoC.KeepConnection := True;
AdoC.CommandTimeout := 60;
AdoC.ConnectionTimeout := 60;
AdoC.Open;
qryMsg := TADOQuery.Create(nil);
qryMsg.Connection := AdoC;
while Main_F.btnCheckOrder17uooStop.Enabled do
begin