난 그냥이 코드를 썼다 :내 Winforms 응용 프로그램에서 SynchronizationContext.Current가 null 인 이유는 무엇입니까?
System.Threading.SynchronizationContext.Current.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
을하지만
난 그냥이 코드를 썼다 :내 Winforms 응용 프로그램에서 SynchronizationContext.Current가 null 인 이유는 무엇입니까?
System.Threading.SynchronizationContext.Current.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
을하지만
는 this explanation를 참조 System.Threading.SynchronizationContext.Current은 null입니다.
SynchronizationContext.Current은
블로그 게시물 해결 방법을 제안한다 (당신이 실제로 필요하지 않은 유일한 스레드입니다) 메인 스레드에서 설정됩니다.
작동하려면. UI 스레드에서
private SynchronizationContext synchronizationContext;
클래스 (메인 스레드) 작업자 스레드
synchronizationContext.Post(
state => DoUpdateInUIThread((Abc)state),
abc);
작업 스레드에서 syncronizationContext가 인스턴스화되거나 전달되는 방식은 무엇입니까? – Tim
폼에'BackgroundWorker'를 사용하고 있다고 가정 해 봅시다. 생성자에서'SynchronizationContext.Current'를 저장하지 않거나 클래스 레벨 변수로 이벤트를로드하면'RunWorkerCompleted' 핸들러에서 액세스 할 수 있습니다. 또는 발표자와 같은 다른 클래스에서 작업하는 경우 UI 스레드에서 발표자를 만들고 생성자에서 컨텍스트를 저장할 수 있습니다. –
니스 해결에
에서
! – psulek