Is it safe to use the SHFileOperation in a worker thread?
-
13-11-2019 - |
Question
I would like to have
- one background thread which will copy the files through the
SHFileOperation
function, always only oneSHFileOperation
at the time (but I want it to be in the thread) - I need the UI output, so I need to use the
FOF_SIMPLEPROGRESS
flag and pass something to theWnd
member
I have two questions
- is it safe to call the
SHFileOperation
withFOF_SIMPLEPROGRESS
flag (for user interaction) from the thread other than main ? - if yes, what handle should I pass into the
Wnd
member ? I've tried the handle of the main form, but when e.g. the overwrite confirmation dialog pops up and you confirm it, the main form is sent to the background, what is really strange
Note:
I have a queue for these operations, so only one SHFileOperation
is performed at the time (after it's finished, the thread continues to the other action, what might be the next SHFileOperation
)
Thanks a lot
Solution
- It's perfectly safe to call
SHFileOperation
from a thread other than the main thread. - I would pass
0
as thehwnd
member. If you pass the handle of the main window then I expect that window will be disabled becauseSHFileOperation
is a modal dialog. Since the file confirmation and progress dialogs are the top level UI for the background thread, you don't want any windows to be disabled when these modal dialogs show.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow