SetCurrentDirectory超时

时间:2009-07-07 14:44:02

标签: c++ visual-c++ mfc timeout

如果网络速度减慢阻止在一段时间内访问目录,SetCurrentDirectory()是否可能超时? (大约15-30秒......?)

如果可以配置超时,可以在哪里设置?

2 个答案:

答案 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仍然可以完成这项工作。当然,你必须考虑如果集合花费的时间超过你愿意等待的时间会发生什么,但是在主要线程移动到集合之后确实已经完成了。

说到这里,我试图避免使用当前目录,原因不是打开文件选择对话框左右。作为全局流程,在多线程环境中,它不可信任。尽可能使用完整路径。