FileExists超时

时间:2009-11-03 14:40:36

标签: windows delphi networking

  

可能重复:
  Faster DirectoryExists function?

我想检查网络驱动器上是否存在某个文件。但是如果驱动器断开连接,FileExists太慢了。如何查看超时?

欢迎举例。

3 个答案:

答案 0 :(得分:4)

结帐

Faster DirectoryExists function?

我在那里问了同样的问题。重要的是,如果文件不存在,你不能避免那些长时间超时。

答案 1 :(得分:2)

如果你知道当文件存在时,FileExists会快速返回,那么你可以从另一个线程调用FileExists并使用自定义超时参数来更快地中止操作。

答案 2 :(得分:2)

问题在于,FileExists正在调用CreateFile(实际上是NtCreateFile),并且对CreateFile的调用是同步的。

您可以通过提取计算机名称并ping计算机名称来实现某些功能,但这只会告诉您与计算机关联的NIC是否在线,它没有说明文件的状态。远程计算机上的打印服务。您的文件也可能位于DFS连接的另一端,在这种情况下,您甚至无法确定正确的远程服务器。

最重要的是,这样做真的很有挑战性,你最好去做despart所说的并在另一个线程上调用FileExists。确保在超时时不要尝试清理线程 - TerminateThread是一个邪恶的API。