我知道 SetCurrentDirectory 不应该用在多线程应用程序中,因为当前目录在进程中的所有线程之间共享。
考虑到这一点,设置目录的最佳方法是什么。 通过在打开文件时包含完整路径名而不是首先使用 SetCurrentDirectory 导航到它们,通常可以避免设置目录,但这是唯一的解决方案吗?
最佳答案
我以前遇到过这个问题。
任何需要当前目录概念来支持相对路径或搜索的对象(例如构建工具)都有一个成员属性,它用它的“当前”路径维护,然后构建完整路径以打开/创建/搜索.
CurrentPath 的初始值可以在应用程序的加载阶段检索一次,例如main()、WinMain()、DllInit() 等通过 GetCurrentDirectory 存储在一个全局变量中。之后忽略 Win32 版本。
OPENFILENAME 结构有一个初始目录成员,因此文件打开/保存对话框不必使用 Win32 当前目录。
关于c++ - 多线程应用程序中的 SetCurrentDirectory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062306/