【问题标题】:FileExists timeout [duplicate]FileExists 超时[重复]
【发布时间】:2009-11-03 14:40:35
【问题描述】:

可能重复:
Faster DirectoryExists function?

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

欢迎提供示例。

【问题讨论】:

    标签: windows delphi networking


    【解决方案1】:

    退房

    Faster DirectoryExists function?

    我在那里问了同样的问题。本质是不幸的是,如果文件不存在,您将无法避免那些长时间的超时。

    【讨论】:

    • 谢谢,抱歉重复
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      问题在于 FileExists 在幕后调用了 CreateFile(实际上是 NtCreateFile),而对 CreateFile 的调用是同步的。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-29
        • 2011-08-27
        • 2014-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-07
        相关资源
        最近更新 更多