2009-11-10 7 views

답변

15

this explanation를 참조 System.Threading.SynchronizationContext.Current은 null입니다.

SynchronizationContext.Current은

블로그 게시물 해결 방법을 제안한다 (당신이 실제로 필요하지 않은 유일한 스레드입니다) 메인 스레드에서 설정됩니다.

+0

니스 해결에

synchronizationContext = System.Threading.SynchronizationContext.Current; 

에서

! – psulek

18

작동하려면. UI 스레드에서

private SynchronizationContext synchronizationContext; 

클래스 (메인 스레드) 작업자 스레드

synchronizationContext.Post( 
    state => DoUpdateInUIThread((Abc)state),  
    abc); 
+0

작업 스레드에서 syncronizationContext가 인스턴스화되거나 전달되는 방식은 무엇입니까? – Tim

+0

폼에'BackgroundWorker'를 사용하고 있다고 가정 해 봅시다. 생성자에서'SynchronizationContext.Current'를 저장하지 않거나 클래스 레벨 변수로 이벤트를로드하면'RunWorkerCompleted' 핸들러에서 액세스 할 수 있습니다. 또는 발표자와 같은 다른 클래스에서 작업하는 경우 UI 스레드에서 발표자를 만들고 생성자에서 컨텍스트를 저장할 수 있습니다. –

관련 문제