FileExists() auf gemaptem Netzlaufwerk nicht zuverlässig?!?
-
Es gibt zwar schon eine Menge Einträge zu FileExists(), aber in Kombination mit einem Netzlaufwerk habe ich nichts gefunden.
Folgendes Problem tritt wohl auf: Die Methode arbeitet unzuverlässig, was das Zeitverhalten angeht. Wenn die gesuchte Datei nicht sofort verfügbar ist, wird ein false zurückgegeben, obwohl sie eigentlich da ist. Bevor ich was eigenes parametrierbares konstruiere -- kennt jemand eine andere Borland-Komponente?
Merci
Catlighter
-
Mit welcher BCB-Version? Auf was für einem Netzwerklaufwerk. Aus meiner Erfahrung (BCB 5 und 6) auf einem NT-Server gibt es keinerlei derartige Probleme.
Was heißt, wenn die gesuchte Datei nicht sofort verfügbar ist? Wie habe ich das zu verstehen? Netzwerk zu langsam? Datei gerade erst erzeugt? ...
Grüße Joe_M.
-
Ich schätze mal, dass die verzögerte Meldung, dass eine Datei erstellt wurde, am Dateisystem selber liegt. Wenn man einen Ordner erzeugt und mal beobachtet, wie lange es braucht, bis alle Anwendungen benachrichtigt wurde. Da kann schon mal 0,5s vergangen sein. Über das Netzwerk wird das evtl. noch ein bisschen länger dauern.
-
Sorry, das ich erst heut wieder teilnehmen kann...
Also zur Klärung:
Es handelt sich nicht um frisch erzeugte Dateien!
Der Fehler tritt nur sporadisch auf! (deswegen ja meine Umschreibung "unzuverlässig")
Das Netz als solches ist OK, der Server ein W2000Server.Ich nehme an die Methode FileExists verwendet eine fixes Timeout, welches man leider nicht parametrieren kann. Werde ich wohl selber etwas machen müssen.

-
Ich hab' hier nochmal den Uraltsource ausgepackt und mußte feststellen, dass ich tatsächlich eine Timergesteuerte Wartezeit von 2 Sekunden verwende, bevor ich nach dem Erzeugen auf die Datei zugreife...
Je nachdem was Du machst würde ich einfach eine Schleife nach der Erzeugung verwenden:
int iLoopCount = 0; bool bFileExists; do { if (iLoopCount) Sleep(ILoopCount * 50); iLoopCount++; bFileExists = FileExists(<Filename>); } while (!bFileExists && iLoopCount < 10)Verucht 10 Mal die Datei zu finden, mit größer werdenden Pausen. Wenn ich richtig rechne dauert der Vorgang knapp 3 Sekunden, bevor die Routine 'aufgibt'.
-
Danke Joe,
das klingt gut und ich werde es mal ausprobieren
