Delphi: переменный массив потока не выполняет весь индекс массива - PullRequest
0 голосов
/ 19 сентября 2018

Я создал поток для выполнения записей в таблице и сделал вызов, используя цикл, как показано в следующем коде.что является проблемой 100 циклов, не все значения переменной I вводятся в таблицу.

{ TDBThread }

    procedure TDBThread.Execute;
    begin
      InsertDB(Fid);
    end;

    procedure TDBThread.InsertDB(Aid: Integer);
    var
      oConn: TFDConnection;
      oQry: TFDQuery;
    begin
      oConn := TFDConnection.Create(nil);
      oConn.ConnectionDefName := 'smen';
      oQry := TFDQuery.Create(nil);
      oQry.Connection := oConn;
      try
        try
          oQry.SQL.Text := 'insert into thethread (id,msg) values (:id,''Thread'')';
          oQry.ParamByName('id').AsInteger := Aid;
          oQry.ExecSQL;
        except
        end;
      finally
        oConn.Close;
        oQry.Connection := nil;
        oQry.Free;
        oConn.Free;
      end;
    end;

procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
      dbThread: array of TDBThread;
    begin
      SetLength(dbThread,100);
      for I := 0 to 99 do
      begin
        Application.ProcessMessages;
        dbThread[I] := TDBThread.Create(True);
        dbThread[I].FreeOnTerminate := True;
        dbThread[I].id := I+1;
        dbThread[I].Start;
        Sleep(1);
      end;
    end;
...