Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Zur Info] FileExists hängt Rechner auf (https://www.delphipraxis.net/139604-%5Bzur-info%5D-fileexists-haengt-rechner-auf.html)

berens 1. Sep 2009 12:09


[Zur Info] FileExists hängt Rechner auf
 
Hatte mich eben gewundert, warum mein Programm, das sonst soweit einwandfrei funktioniert, auf einmal komplett hängt und sich selbst über den Taskmanager und Delphi "Ausführen abbrechen (Strg + F2)" nicht mehr beenden lässt. Sogar "Prozess beenden" brachte im Taskmanager nichts mehr.

Ursache des Ganzen: Ich habe mit FileExists einen UNC-Dateipfad prüfen wollen, der aus der Einstellungs-Datei vom Kunden kommt. Dieser verweist auf einen PC/Server, den es bei mir im Netzwerk natürlich nicht gibt. Da Windows aber einen ziemlich hohen TimeOut für diese Überprüfung hat (schon so ~ 2 Minuten) wirkt das Programm wie abgestürzt.

Wer es selbst mal probieren möchte:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  t: string;
begin
  t := 'c:\1.txt';
  ShowMessage(BoolToStr(FileExists(t), True)); // Kein Problem

  t := '\\foobarsample\foo\bar\file1.txt';
  ShowMessage(BoolToStr(FileExists(t), True)); // mind. 2 Minuten warten, dann kommt die Meldung und das Programm reagiert wieder
end;

franktron 1. Sep 2009 12:23

Re: [Zur Info] FileExists hängt Rechner auf
 
Das ist keine Problem von Delphi sonder von Windows der Findet die den Server nicht und dann dauert das ca. 2 Min bis Win wieder reagiert.

Luckie 1. Sep 2009 13:12

Re: [Zur Info] FileExists hängt Rechner auf
 
Lösung wäre, das ganze in einen Thread packen und mit MSDN-Library durchsuchenWaitForSingleObject auf dessen Signalisierung zu warten. Wenn dir die zwei Minuten zu lang sind, kannst du auch einen kürzeren Timeout angeben bei WaitForSingleObject.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz