我正在测试远程共享(在 Windows 服务器上)中是否存在文件。用于测试的底层函数是 WinAPI 的 GetFileAttributes,发生的情况是该函数在各种情况下可能会花费过多的时间(几十秒),例如当目标服务器离线时,当有权利或 DNS 问题等。
但是,在我的特殊情况下,它始终是 LAN 访问,因此如果文件不能在不到 1 秒内访问,那么通常再等几十秒就无法访问...
是否有不会停止的 GetFileAttributes 替代方法? (除了在线程中调用它并在超时后终止线程,这似乎带来了自己的问题包)
最佳答案
问题真的不是 GetFileAttributes。它通常只调用一次底层文件系统驱动程序。是那个 IO 停滞了。
不过,解决方案可能很简单。调用CancelSynchronousIo()一秒钟后(这显然需要第二个线程,因为您的第一个线程卡在 GetFileAttributes 中)。
关于windows - 如何避免 GetFileAttributes 中的网络停顿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1142080/