Hallo.
Ich habe hier eine .. seltsame .. Idee, und würde das mal gerne Leuten vorstellen, die Ahnung haben und Feedback einholen.
Ich habe hier ein Programm, welches Dateien extrahiert, dann jede Datei in eine TODO Liste einträgt. Diese Liste wird abgearbeitet, dabei können diese Dateien wieder extrahiert werden, ..., etc. Gelöst ist das mit Woker-Threads, die sich immer einen Eintrag aus der Liste holen (Eintrag wird aus der Liste gelöscht) und dann abarbeiten.
Da die extrahierten Dateien / Verzeichnisse auch gelöscht werden müssen, aber ich keine Ahnung habe, wann das komplette Paket abgearbeitet wird (OK, ich könnte Liste führen..), habe ich diese .. Idee:
Jedes Objekt (Datei) aus einem Extrakt bekommt eine Referenz auf ein Spezialobjekt ("Deleter"). Dieser Deleter hat nur das Dispose überschrieben: Verzeichnis löschen. Idee: Sobald die Dateien abgearbeitet wurden, werden die Objekte auch nicht mehr referenziert. Also werden diese Objekte vom GC entfernt. Irgendwann wurden alle Objekte eines Extrakts entfernt, nun gibt es keine Referenz auf den Deleter mehr. Nun wird das Deleter Objekt entfernt und das Löscht das Verzeichnis im Dispose.
Das einzige Problem was ich habe: Wird der Optimierer nicht die Referenz rausoptimieren, weil das ja im Code nicht angesprochen wird?
Was haltet Ihr davon?
Danke und Grüße
Ralph
Ich habe hier eine .. seltsame .. Idee, und würde das mal gerne Leuten vorstellen, die Ahnung haben und Feedback einholen.
Ich habe hier ein Programm, welches Dateien extrahiert, dann jede Datei in eine TODO Liste einträgt. Diese Liste wird abgearbeitet, dabei können diese Dateien wieder extrahiert werden, ..., etc. Gelöst ist das mit Woker-Threads, die sich immer einen Eintrag aus der Liste holen (Eintrag wird aus der Liste gelöscht) und dann abarbeiten.
Da die extrahierten Dateien / Verzeichnisse auch gelöscht werden müssen, aber ich keine Ahnung habe, wann das komplette Paket abgearbeitet wird (OK, ich könnte Liste führen..), habe ich diese .. Idee:
Jedes Objekt (Datei) aus einem Extrakt bekommt eine Referenz auf ein Spezialobjekt ("Deleter"). Dieser Deleter hat nur das Dispose überschrieben: Verzeichnis löschen. Idee: Sobald die Dateien abgearbeitet wurden, werden die Objekte auch nicht mehr referenziert. Also werden diese Objekte vom GC entfernt. Irgendwann wurden alle Objekte eines Extrakts entfernt, nun gibt es keine Referenz auf den Deleter mehr. Nun wird das Deleter Objekt entfernt und das Löscht das Verzeichnis im Dispose.
Das einzige Problem was ich habe: Wird der Optimierer nicht die Referenz rausoptimieren, weil das ja im Code nicht angesprochen wird?
Was haltet Ihr davon?
Danke und Grüße
Ralph
Comment