小弟我用了线程,为什么在执行的时候程序还是假死状态呢

我用了线程,为什么在执行的时候程序还是假死状态呢?
代码如下:

  TExcelToSQL = class(TThread)
  private
  { Private declarations }
  protected
  procedure update;
  procedure Execute; override;
  end;



procedure TExcelToSQL.Execute;
begin
  Synchronize(update);
end;

procedure TExcelToSQL.update;
var
  i,j,k,l,m:integer;
  F_Field:array [0..50] of String; //源字段
  S_Field:array [0..50] of String; //映谢字段
begin
  if tablename='goods' then
  begin
  begin
  Btn_Start.Enabled:=False;
  OpenDataSet(Qry_Import,'Select * from tGoods');
  for i:=1 to FrmMain.b_row-1 do
  begin
  ProgressBar1.Max:=FrmMain.b_row-1;
  FrmData.ADOConnection1.BeginTrans;
  try
  with Qry_Import do
  begin
  Append;
  For k:=1 to Qry_Field.RecordCount do
  begin
  m:=FrmMain.ImportFields.IndexOf(F_Field[k])+1;
  for l:=1 to Qry_Field.RecordCount do
  begin
  FieldByname(S_Field[k]).AsString:=FrmMain.eclApp.activesheet.cells.item[i+1,m].Text;
  end;
  end;
  Post;
  end;
  FrmData.ADOConnection1.CommitTrans;
  except
  FrmData.ADOConnection1.RollbackTrans;
  end;
  ProgressBar1.Position:=i;
  end;
  MessageDlg(Pchar('导入数据完成,导入成功 '+inttostr(o)+' 条,导入失败 '+inttostr(p)+' 条'),mtConfirmation, [mbOK], 0);
  Btn_Start.Enabled:=True;
  end;
  end;
  end;
end;

procedure TFrmImport.Btn_StartClick(Sender: TObject);
begin
  with TExcelToSQL.Create(True) do Resume;
end;

------解决方案--------------------
去掉 Synchronize
使用的控件全局改成线程中动态创建。
------解决方案--------------------
你这个的确是线程,但是“假线程”,

procedure TExcelToSQL.Execute;
begin
Synchronize(update);
end;


线程时间全部是用来线程同步的调用了,这样使用线程毫无意义
------解决方案--------------------
探讨

你这个的确是线程,但是“假线程”,

procedure TExcelToSQL.Execute;
begin
Synchronize(update);
end;


线程时间全部是用来线程同步的调用了,这样使用线程毫无意义