.NET BackgroundWorker 스레드에서 관리되지 않는 코드를 호출하는 이유는 UI에 영향을 미칩니 까?

StackOverflow https://stackoverflow.com/questions/283241

  •  08-07-2019
  •  | 
  •  

문제

.NET 2.0에서 오랜 일련의 작업이 있습니다. BackgroundWorker 실. 참조 된 어셈블리에 위치한 관리되지 않은 코드를 호출하면 통화가 완료 될 때까지 UI가 동결됩니다.

왜 이런거야? 이 전화를하지 말아야합니다 BackgroundWorker 실?


예, 그것은 COM 구성 요소이지만 그것이 STA인지 아닌지, 그리고 어떤 의미/해상도가 무엇인지 알 수 있는지 잘 모르겠습니다. 나는 그 구성 요소를 여러 번 호출하지만 UI가 응답하지 않는 것을 알 수있는 장기 실행 일뿐입니다.

이 호출은 서버에서 데이터를 검색합니다.

도움이 되었습니까?

해결책

질문에 COM 태그가 있습니다. COM 구성 요소로 호출하고 있습니까? STA 구성 요소입니까? 그렇다면 UI 스레드에서 작업을 수행하기 위해 다시 마샬링 할 수 있습니다. 나는 내가 COM에 대한 전문가가되면 먼 길을 쉽게 인정하지만, 그것이 문제라면 놀라지 않을 것입니다.

명시 적으로 만든 새 스레드에서 전화를 걸면 어떻게됩니까?

다른 팁

예, 또한 모든 관리되지 않는 코드 또는 특정 구성 요소 또는 API에서 발생합니까? 특정이라면 관리되지 않는 코드는 무엇을하고 있습니까?

또한, 당신은 단순히 배경 작업자에서 현재 코드를 댓글을 달고 (당신은에서 런 워크 레라스 체인을 실행하고 있습니다 ...) 잠을자는 것입니다. GUI가 응답하지 않으면 무언가가 옳지 않은 경우, 그렇지 않으면 Jon이 지적한대로 COM의 경우가 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top