Hi,
mal eine etwas allgemeinere Frage:
Ist TDirectory.Delete threadsicher? Mal ganz davon abgesehen, wie es grundsätzlich damit aussieht einen Ordner zu löschen und dort nicht sich gegenseitig die Struktur weg zu ziehen, dieses Problems bin ich mir bewusst. Ich versuche das auch zu umgehen, indem ich erst prüfe ob der Ordner vorhanden ist, ihn dann umbenenne und dann erst lösche. Schließt das Risiko nicht zu 100% aus, aber minimiert es für mich auf ein akzeptables Mindestmaß.
Folgende Konstellation die ich nicht wirklich zum laufen bekomme. Mein Projekt wird als
ISAPI DLL auf einem IIS laufen. Der erstellt mir für jede Request von einem neuen Benutzer/
IP das Webmodule neu. Die
DLL schreibt die Zugriffe in Logdateien in separierte Ordner. Ich möchte jetzt beim Erstellen des Webmoduls prüfen, ob ein Ordner mit der Bezeichnung Heutiges Datum minus X Tage existiert und wenn ja, dann möchte ich es löschen. Funktioniert auch Problemlos, solange ich das im Main-Thread laufen lasse. Das Problem das ich aber nun habe ist, dass dann der erste Abruf auf den Endpunkt nach dem Datumswechsel, genau so lange länger braucht wie der Ordner braucht um gelöscht zu werden. Das kann je nach Größe länger dauern. Das wollte ich vermeiden indem ich den Löschprozess in einen Thread werfe. Mit TTask.Run normalerweise keine große Sache, dachte ich. Aber dann funktioniert weder das Umbenenne noch das Löschen. Hab schon gedacht es liegt vielleicht daran, dass das Webmodul wieder freigegeben wird, also hab ich den Task in eine ITask Objekt gepackt und im Destroy des Webmoduls erst noch auf ein WaitAny geprüft. Hat leider auch nicht geholfen.
Habt ihr noch Ideen was es sein könnte?