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

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

最佳答案

我以前遇到过这个问题。

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

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

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

关于c++ - 多线程应用程序中的 SetCurrentDirectory,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1062306/

10-11 15:57