如果网络速度减慢阻止在一段时间内访问目录,SetCurrentDirectory()是否可能超时? (大约15-30秒......?)
如果可以配置超时,可以在哪里设置?
答案 0 :(得分:1)
以下尝试SetCurrentDirectory
到不存在的目录的程序失败,错误为0x2,即ERROR_FILE_NOT_FOUND
。由于SetCurrentDirectory
正在对目录进行一些验证,因此您可以在慢速网络连接上超时。
#include <windows.h>
#include <stdio.h>
int __cdecl main()
{
if (SetCurrentDirectory(L"C:\\Invalid") == 0)
{
printf("0x%x", GetLastError());
}
return 0;
}
答案 1 :(得分:0)
您可以尝试在单独的线程中设置当前目录,并等待它仅在合理的时间段内完成。由于当前目录设置是按进程进行的,因此从另一个线程调用SetCurrentDirectory仍然可以完成这项工作。当然,你必须考虑如果集合花费的时间超过你愿意等待的时间会发生什么,但是在主要线程移动到集合之后确实已经完成了。
说到这里,我试图避免使用当前目录,原因不是打开文件选择对话框左右。作为全局流程,在多线程环境中,它不可信任。尽可能使用完整路径。