2013-12-10 1 views

답변

2

자바 스크립트 함수를 비동기 적으로 호출 할 수 있지만 (예 : 타이머에서) 비동기로 멀티 스레딩을 가정하지는 않지만이 함수는 여전히 기본 UI 스레드에서 실행됩니다. WebBrowser ActiveX 컨트롤이 STA COM 개체이기 때문에 별도의 스레드를 사용할 수 없습니다.

JavaScript 함수 내에서 오랜 UI 업데이트 작업을 실제로 수행해야하는 경우 올바른 방법은 업데이트 로직을 조절하고 UI 스레드를 반응 형으로 유지하기 위해 각 단계를 비동기 적으로 여러 단계로 실행하는 것입니다. . setTimer 또는 jQuery의 delay을 사용하면됩니다. 더 잘 구조화 된 접근법은 here과 같이 jQuery Deferreds를 사용하는 것입니다.

0

우리는 어떻게 든 트릭으로 우리의 문제를 해결했으며, 다른 사람들에게 유용 할 수 있습니다. WebBrowser를 호출 한 후 새 UI 스레드에서 새 창을 시작하고 이전 창 (새 창은 WebBrowser에서 JavaScript 계산을 수행 중입니다)에서 새 창을 놓습니다. 그러면 진행 막대와로드를 어떻게 든 표시 할 수 있습니다 우리의 html에서 무거운 드로잉을하는 동안 페이지.

관련 문제