我正在测试远程共享(在Windows服务器上)中文件的存在。用于测试的基础功能是WinAPI的GetFileAttributes,并且在各种情况下(例如,目标服务器脱机,出现权限或DNS问题等),该功能可能要花费非常长的时间(数十秒)。

但是,在我的特定情况下,它始终是LAN访问,因此,如果无法在不到1秒的时间内访问文件,则通常需要等待数十秒才能访问该文件...

是否有不会停滞的GetFileAttributes替代方法? (除了在线程中调用它并在超时后杀死线程外,这似乎带来了自己的问题)

最佳答案

问题实际上不是GetFileAttributes。它通常仅使用一次对基础文件系统驱动程序的调用。正是IO处于停滞状态。

不过,该解决方案可能很容易。一秒钟后调用CancelSynchronousIo()(这显然需要第二个线程,因为您的第一个线程卡在GetFileAttributes中)。

10-01 03:25