Thema: Delphi Thread Terminate Problem

Einzelnen Beitrag anzeigen

xman
(Gast)

n/a Beiträge
 
#3

Re: Thread Terminate Problem

  Alt 23. Feb 2005, 12:19
Erstmal danke für die schnelle Antwort!


Ich habe jetzt folgendes versucht:


Delphi-Quellcode:
  dateiname:=s.strings[n];
  tEncrypt := TEncryptionThread.Create(true);
  tEncrypt.Suspended:=True;
  tEncrypt.OnFertig:=ThreadFertig;
  tEncrypt.Priority := tpNormal;
  tEncrypt.FreeOnTerminate := true;
  tEncrypt.fInFileName := dateiname;
  memo1.lines.add('thread:' +dateiname);
  tEncrypt.fPassphrase := g_key;
  tEncrypt.Resume;
Delphi-Quellcode:
procedure TEncryptionThread.execute;
var
  DCPCipher: TDCP_blowfish;
  source, dest: TFileStream;
  temp:string;
begin
  temp:='_tmp';
  RenameFile(fInFileName,fInFileName+temp);
  dest := TFileStream.Create(fInFileName, fmCreate);
  fInFileName:=fInFileName+temp;
  source := TFileStream.Create(fInFileName, fmOpenRead);
  DCPCipher := TDCP_blowfish.Create(nil);
  DCPCipher.InitStr(fPassphrase, TDCP_sha512);
  DCPCipher.EncryptStream(source, dest, source.size);
  DCPCipher.Burn;
  dest.Free;
  source.Free;
  DeleteFile(fInFileName);
  FreeAndNil(DCPCipher);
  if Assigned(OnFertig) then OnFertig(Self);
end;

Delphi-Quellcode:
procedure TfrmMain.ThreadFertig(Sender: TObject);
begin
tEncrypt.terminate;
if tEncrypt.Terminated then begin
  inc(x);
  ppercent:=Trunc(x/pmax*100);
  ProgressBar.Position:=ppercent;
  Application.ProcessMessages;
end;

end;


Das scheint so zu funktionieren, nur habe ich jetzt ein anders Problem...
Der letzte Thread wird nicht gestartet. Also wenn ich 12 Threads create läuft er beim 12 Thread nicht mehr in "ThreadFertig" if terminated rein.
  Mit Zitat antworten Zitat