我用

DirectoryExists (const PathName : String);


检查是否可以从计算机访问目录。但是如果目录不存在并且路径名是网络路径,即

\\computer1\Data


该方法需要很长时间才能返回。

必须有一种更快的方法来确定无法访问网络文件夹。还是可以配置一些DirectoryExists内部使用的超时参数(我查看了源代码,但它只是委托给kernel32中定义的GetFileAttributes)?

有任何想法吗?

最佳答案

没有更快的方法:

当该共享不可用时,访问远程共享上任何内容的任何功能都将超时。

如果您超时的原因是共享的自动断开,那么这些链接可以帮助您:


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


如果应用程序可以在没有完成检查的情况下继续运行,则可以将检查置于单独的线程中,并且在完成检查后,可以在UI中更新状态。

请注意,当您尝试使用多线程方式时,必须证明自己的代码没有竞争条件和内存泄漏。超时与异常结合通常会使这项工作变得艰巨。

10-05 22:28