多线程应用程序中的SetCurrentDirectory

Cal*_*lum 4 c++ windows winapi multithreading visual-c++

我理解SetCurrentDirectory不应该在多线程应用程序中使用,因为当前目录在进程中的所有线程之间共享.

设置目录时考虑到这一点的最佳方法是什么.通过在打开文件时包含完整路径名而不是先使用SetCurrentDirectory导航到它们,可以避免设置目录,但这是唯一的解决方案吗?

dev*_*uff 7

我之前遇到过这个问题.

任何需要当前目录概念来支持相对路径或搜索的对象(例如构建工具)都有一个成员属性,它以"当前"路径维护,然后构建打开/创建/搜索的完整路径.

CurrentPath的初始值可以在应用程序的加载阶段检索一次,例如main(),WinMain(),DllInit()等,通过GetCurrentDirectory存储在全局中.之后,Win32版本被忽略.

OPENFILENAME结构具有初始目录成员,因此文件打开/保存对话框不必使用Win32当前目录.