나는이 질문에 대한 답변을 전부 찾아 보았지만 만족할만한 대답을 찾을 수 없습니다. 어쩌면 여기 누군가가 나를 계몽 할 수 있을지도 모른다.SynchronizationContext 및 InvokeRequired
나는 UI 스레드에서 변경된 이벤트를 발생시키기 위해 SynchronizationContext
개체에 대한 참조를 저장하는 BindingList<T>
의 하위 항목이 있습니다.
이제이 BindingList<T>
이 생성되어 UI 스레드에서 사용되고 백그라운드 스레드로 사용되지 않았을 수도 있습니다. InvokeRequired
과 같은 속성없이이 기능을 어떻게 확인할 수 있습니까? UI 스레드에서 SynchronizationContext.Send
을 호출하면 어떤 결과가 발생합니까?
이 정보를 확인하는 것이 좋습니다. SynchronizationContext.Current는 바인딩 목록이 작업자 스레드에서 만들어 질 때 null이됩니다. Send()는 UI 스레드에서 즉시 실행됩니다. –
UI에 바인딩 된대로 SynchronizationContext를 목록에 전달합니다. 그리고 ListChanged 이벤트를 발생시킬 때 사용하기 전에 SynchronizationContext가 있는지 확인합니다. – Dan