Hallo zusammen.
Ich habe ein kleines Thread Problem und ich hoffe der Thread Experte Luckie und auch alle Anderen mir weiterhelfen können.
Folgende Situation:
Delphi-Quellcode:
//Create Thread
dateiname:=s.strings[n];
tEncrypt := TEncryptionThread.Create(true);
tEncrypt.Priority := tpNormal;
tEncrypt.FreeOnTerminate := true;
tEncrypt.fInFileName := dateiname;
tEncrypt.fPassphrase := g_key;
tEncrypt.execute;
Delphi-Quellcode:
//execute proc
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);
tEncrypt.Terminate;
end;
Das sind die beiden Prozeduren um die es geht.
Ich möchte das der Thread sich nach seiner Abarbeitung beendet.
Ich versuche das durch tEncrypt.terminate doch leider beendet sich der Thread nicht, zumindest steigt die Threadanzahl im Taskmanager immer weiter an. Oder ist das normal?
WaitForSingleObject kann ich eigentlich ausschließen da der Thread mehrere Minuten laufen kann, oder habe ich die Funktion falsch verstanden?
Wäre super wenn ihr mir kurz unter die Arme greifen könntet.
Aber bitte nicht sagen das man Create Thread nicht verwendet! Ich weiß es!
Danke
mfg xman