Hallo!
Ich habe mir deinen Code auch mal "ausgeliehen"
, bekomme aber fast immer bei CloseHandle(FhFile); im Destructor eine
AV bzw. einen Memory-leak...
Muss man irgendwas bestimmtes machen, bevor man den freigibt?
Mein Code sieht grob so aus:
Delphi-Quellcode:
constructor TAutomatics.Create(AOwner: TControl; ASettings: TAutomaticsSetting; ASequenceIndex: Integer);
begin
inherited Create;
FOwner := AOwner;
iSequenceIndex := ASequenceIndex;
rSettings := ASettings;
bEnabled := False;
oFileQueue := TStringList.Create;
oFolderControler := TFldrControl.Create(AOwner);
oFolderControler.Folder := rSettings.sInputFolder;
oFolderControler.OnGetResult := FolderControlEvent;
end;
destructor TAutomatics.Destroy;
begin
oFolderControler.StopThread;
oFolderControler.Free;
oFileQueue.Free;
inherited;
end;
Gestartet wird der Thread an anderer Stelle mit StartThread().
Achja, noch eine Frage:
Das Event triggert ja, sobald eine Datei erstellt wird. Wenn man nun eine sehr große Datei kopiert, triggert das Event, sobald der Dateiname da ist, und lange bevor die Datei komplett erstellt/kopiert wurde. Gibt es einen Trick, wie man ermitteln kann, ob die Datei vollständig erstellt wurde? Mit schwebt da was mit einer Schreife auf TFileStream.Create(..., fmShareExclusive) vor, bis der exklusive Zugriff erfolgreich ist...