7

내가하고 싶은작업자 스레드에서 SHFileOperation을 사용하는 것이 안전합니까?

  • 나는이 필요합니다 (하지만 난 그게 스레드에되고 싶은) 항상 한 SHFileOperation 당시 SHFileOperation 기능을 통해 파일을 복사합니다
  • 한 배경 스레드 UI 출력은, 그래서 FOF_SIMPLEPROGRESS 플래그를 사용하고 난이 두 가지 질문

      0123이

Wnd 회원에게 뭔가를 전달해야

  • SHFileOperationFOF_SIMPLEPROGRESS 플래그 (사용자 상호 작용 용)로 주간 이외의 스레드에서 호출하는 것이 안전합니까?
  • 예인 경우 Wnd 회원에게 어떤 핸들을 전달해야합니까? 나는 주 양식의 핸들을 시도했지만, 예를 들어. 덮어 쓰기 확인 대화 상자가 팝업 당신이 그것을이 기본 폼이 배경에 보내 확인, 무슨 일이 정말 이상하다
  • 참고 : 은 그래서 하나의 SHFileOperation이 시간에 수행되고, 이러한 작업을위한 큐가 많은 그것은 메인 스레드가 아닌 다른 스레드에서 SHFileOperation 전화를 완벽하게 안전

    답변

    6
    1. 에게

      감사합니다 (이 끝낸 후, 스레드는 다음 SHFileOperation에게가 무엇인지, 다른 행동을 계속한다).

    2. 회원으로 0을 전달합니다. 메인 윈도우의 핸들을 전달하면 SHFileOperation이 모달 대화 상자이기 때문에 해당 윈도우가 비활성화 될 것으로 예상됩니다. 파일 확인 및 진행 대화 상자는 백그라운드 스레드의 최상위 UI이므로이 모달 대화 상자가 표시되면 창을 비활성화하지 않아도됩니다.
    +0

    큰 소리. 'Wnd' 멤버가 0으로 설정되면 완벽하게 작동합니다. 고마워요! –

    +0

    또한 설명서에는 SHFILEOPSTRUCT와의 상대 경로를 사용하면 스레드로부터 안전하지 않다고 언급되어 있습니다. 따라서 작업자 스레드에서 이것을 사용한다면 절대 경로를 사용해야합니다! – 8bitwide

    +0

    @ 8bitwide 상대 경로를 사용하면 절대로 스레드로부터 안전하지 않습니다. 어떤 API 호출도 아닙니다. 프로세스 당 하나의 작업 디렉토리가 있기 때문입니다. –

    관련 문제