2009-03-26 5 views
0

에 첨부하고 클릭하면 해당 이벤트가 실행되지 않습니다. 그 이유는 무엇입니까? 주 스레드에서 이벤트 처리기를 연결하면이 잘 작동하고 있지만 일을 비동기 적으로 할 싶어요.BHO - 작업자 스레드에서 DOM의 특정 요소에 대한 onclick 처리기를 연결하면 해당 작업자 스레드에서 이벤트 처리기를

스레드간에 IID_IWebBrowser2 포인터를 전달하기 위해 CoMarshalInterThreadInterfaceInStream 및 CoGetInterfaceAndReleaseStream을 사용하고 있습니다.

답변

1

작업자 스레드는 무엇을하고 있으며 이벤트 처리기의 스레딩 모델은 무엇입니까? 스레딩 모델이 STA 인 경우 작업자 스레드는 주기적으로 메시지를 보내야하거나 동기화를 기다리는 경우 CoWaitFor... 함수를 사용하여 COM 메시지가 처리되는지 확인해야합니다. 또는 무료 스레드 된 마샬 러를 집계 할 수 있지만 개체가 스레드로부터 안전한지 확인하고 이렇게하면 스레딩 모델 오류를 줄 수있는 다른 COM 인터페이스를 호출하지 않습니다.

아마도 웹 브라우저 컨트롤은 MTA와 호환되지 않으므로 사용자가 해당 브라우저에 배치 할 수 없습니다. 어쨌든 MTA는 사용자 인터페이스 스레드와 호환되지 않으므로 규칙을 준수해야합니다.

관련 문제