Безопасно ли использовать SHFileOperation в рабочем потоке?

Я хотел бы иметь

  • один фоновый поток, который будет копировать файлы через всегда только один SHFileOperation в то время (но я хочу, чтобы он был в потоке)
  • мне нужен вывод пользовательского интерфейса, поэтому мне нужно использовать FOF_SIMPLEPROGRESS флаг и передать что-то Wnd

у меня два вопроса

  1. можно ли позвонить SHFileOperation с FOF_SIMPLEPROGRESS флаг (для взаимодействия с пользователем) из потока другие, чем основной ?
  2. если да, то какую ручку я должен передать в Wnd - члены ? Я пробовал дескриптор основной формы, но когда, например, появляется диалоговое окно подтверждения перезаписи, и вы подтверждаете его, основная форма отправляется в фоновый режим, что действительно странно

Примечание.: У меня есть очередь для этих операций, поэтому только один SHFileOperation выполняется в то время (после его завершения поток продолжает другое действие, что может быть следующим SHFileOperation)

Спасибо большое

1 ответов


  1. совершенно безопасно позвонить SHFileOperation из потока, отличного от основного потока.
  2. Я 0 как hwnd член. Если вы передадите дескриптор главного окна, я ожидаю, что это окно будет отключено, потому что SHFileOperation является модальным диалогом. Поскольку диалоговые окна подтверждения и выполнения файлов являются интерфейсом верхнего уровня для фонового потока, вы не хотите, чтобы какие-либо окна были отключены при отображении этих модальных диалоговых окон.