AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ThreadProbleme mit DeleteFile

Ein Thema von Fuchtel · begonnen am 4. Jun 2007 · letzter Beitrag vom 5. Jun 2007
Antwort Antwort
Fuchtel

Registriert seit: 9. Nov 2005
Ort: Bamberg
55 Beiträge
 
Delphi 2005 Personal
 
#1

ThreadProbleme mit DeleteFile

  Alt 4. Jun 2007, 11:56
Hallo,

Ich habe folgendes Problem:

In einer Multithread-Anwendung, die Dateien ließt, verarbeitet und dann löscht, kommt es öfters vor,
daß eigentlich gelöschte Dateien (mit Windows.DeleteFile(sFile) erneut verarbeitet werden.

MSDN schreibt dazu:

Zitat:
The DeleteFile function marks a file for deletion on close. Therefore, the file deletion
does not occur until the last handle to the file is closed. Subsequent calls to CreateFile
Wie kann ich nun feststellen, ob die Datei wirklich schon gelöscht wurde. FileExists(sFile) funzt,
wie oben breschrieben, nicht.

Eventuell kann man das mittels Windoes.GetQueuedCompletionStatus herausbekommen, hat dies schon mal
jemand eingesetzt bzw. einen anderen Vorschlag?

Besten Dank im vorraus.

Fuchtel
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: ThreadProbleme mit DeleteFile

  Alt 4. Jun 2007, 11:59
liefert dir denn DeleteFile True zurück?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Fuchtel

Registriert seit: 9. Nov 2005
Ort: Bamberg
55 Beiträge
 
Delphi 2005 Personal
 
#3

Re: ThreadProbleme mit DeleteFile

  Alt 4. Jun 2007, 12:38
Hallo SirThornberry,

ja, sicherlich aber im Hauptthread, der die anderen anstößt, wird die Datei immer noch gefunden!

Gruß Fuchtel
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#4

Re: ThreadProbleme mit DeleteFile

  Alt 4. Jun 2007, 12:39
Bist du denn sicher, dass die Datei auch wirklich überall geschlossen wurde?
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Fuchtel

Registriert seit: 9. Nov 2005
Ort: Bamberg
55 Beiträge
 
Delphi 2005 Personal
 
#5

Re: ThreadProbleme mit DeleteFile

  Alt 4. Jun 2007, 12:42
Bei mir, das Prog. lauft auf einem Server, ja.

Allerdings werden die Dateien nicht von mir geschrieben. Deshalb brauche ich auch eine verläßliche Abfrage, ob die Datei nun endlich (erfolgreich) gelöscht wurde.

Fuchtel
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: ThreadProbleme mit DeleteFile

  Alt 4. Jun 2007, 15:52
fileexists versucht die Datei per Auflistung zu finden. Und solange sie per DirectoryListing gefunden wird ist sie nunmal noch nicht gelöscht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Fuchtel

Registriert seit: 9. Nov 2005
Ort: Bamberg
55 Beiträge
 
Delphi 2005 Personal
 
#7

Re: ThreadProbleme mit DeleteFile

  Alt 5. Jun 2007, 14:09
Ich habe jetzt doch eine hinreichend funktionierende Lösung gefunden:


Delphi-Quellcode:
function TestFileToUse(const sFile : string ) : boolean;
var
   hFile : THandle;
   lpFileInfo : TByHandleFileInformation;
begin
   Result := false;
   if not FileExists(sFile) then exit; // File existiert nicht
   hFile := CreateFile(pchar(sFile),
                       GENERIC_READ or GENERIC_WRITE,
                       0,
                       nil,
                       OPEN_EXISTING,
                       FILE_ATTRIBUTE_NORMAL or FILE_FLAG_WRITE_THROUGH,
                       0);
  If (hFile = INVALID_HANDLE_VALUE) then Exit; // File in Bearbeitung
  GetFileInformationByHandle(hFile, lpFileInfo);
  CloseHandle(hFile);
  If lpFileInfo.dwFileAttributes and sysutils.faArchive = 0 then Exit; // Kein A-Flag
  Result := true;
end;
Gleichzeitig wird beim Begin der Verarbeitung der Dateien das A-Flag zurückgesetzt.

Gruß Fuchtel
  Mit Zitat antworten Zitat
Flax

Registriert seit: 12. Mär 2003
76 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: ThreadProbleme mit DeleteFile

  Alt 5. Jun 2007, 14:44
Synchronisiert du den Löschvorgang überhaupt?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz