Faster DirectoryExists function?

There was the same question for C#: How to avoid network stalls in GetFileAttributes?

As codymanix said, use threads. The above link will show you how you can do it with delegates in C#. Don't know Delphi, but maybe you know how to convert the code?


If you test for lots of directories you should use threads to do all the queries in parallel because for network shares ther are usually long timeouts.


There is no faster way:

any function accessing anything on a remote share will timeout when that share is not available.

If the cause of your timeouts is automatic disconnecting of shares, then these link may help you:

  • How Autodisconnect Works in Windows NT and Windows 2000
  • Mapped Drive Connection to Network Share May Be Lost

If the application can continue without the completion of the check, then you can put the check in a separate thread, and upon completion of the check, you can update your status in the UI.

Be aware that when you try a multi-threading way, that you have to disprove your code is free of race-conditions and memory leaks. Time-outs in combination with exceptions usually make that a hard task.