我想要
- 一个后台线程将通过
SHFileOperation
函数复制文件,一次始终只有一个SHFileOperation
(但我希望它位于线程中)< - 我需要 UI 输出,因此需要使用
FOF_SIMPLEPROGRESS
标志并将某些内容传递给Wnd
成员
我有两个问题
- 从除 main 之外的线程调用带有
FOF_SIMPLEPROGRESS
标志(用于用户交互)的SHFileOperation
是否安全? - 如果是,我应该将什么句柄传递给
Wnd
成员?我已经尝试过主窗体的句柄,但是当例如弹出覆盖确认对话框,你确认一下,主窗体就发送到后台了,真是奇怪
注意:
我有一个用于这些操作的队列,因此一次只执行一个 SHFileOperation
(完成后,线程继续执行另一操作,可能是下一个 SHFileOperation
)
非常感谢
最佳答案
- 从主线程以外的线程调用
SHFileOperation
是完全安全的。 - 我会将
0
作为hwnd
成员传递。如果您传递主窗口的句柄,那么我预计该窗口将被禁用,因为SHFileOperation
是一个模式对话框。由于文件确认和进度对话框是后台线程的顶层 UI,因此您不希望在显示这些模式对话框时禁用任何窗口。
关于delphi - 在工作线程中使用 SHFileOperation 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483588/