大家有没有碰到过这样子的情况呢。线程根本没有执行。
下面是线程内执行的部份代码,帮我看看哪有问题。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

解决方案 »

  1.   

    线程根本没有执行的话,你给我们看execute里的东东有啥用啊。
    在xp下正常?
    win7下不正常先确认是否有权限,确认是否用到了什么数据库驱动之类的。
    你还是先断点单步跟一下再说了。
      

  2.   

    楼上大哥正解!
    只有Execute的代码开不出来个啥!
    还是自己跟踪一下吧!
    呵呵!
    如果XP下能够执行的话!
    Win7下问题也不大的!
    跟Execute代码关系不大!
    呵呵!
      

  3.   

    哥,有两点
    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;
      

  4.   

    procedure thAutoMsg.Execute;
    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