이 시나리오에 가장 적합한 방법이 무엇인지 궁금해했습니다. 다른 백그라운드 스레드에서 채워지는 컬렉션에 데이터 바인딩하려고합니다.데이터에 대한 데이터 바인딩이 wpf의 다른 스레드에서 여전히 처리 중임
내 백그라운드 스레드가 몇 분 동안 실행될 수있는 처리 루프의 항목을 컬렉션에 추가하고 있습니다. 때때로 UI에 이벤트를 발생시키고 UI에서 시각화하기 위해 컬렉션의 데이터에 대한 참조를 전달하므로 사용자는 자신이 가지고있는 것과 상호 작용할 수 있고 처리를 계속할 수 있습니다.
UI가 데이터 콜렉션에 대해 foreach() 루프와 관련된 시각화 (꽤 복잡한 자체)를 렌더링하는 데 문제가 있습니다. 배경 스레드가 컬렉션의 데이터를 변경하면 루프가 스스로를 망칠 수 있습니다. 열거 중.
그래서 내 브레인 스토밍은 다음과 같이 간 :- 일시 정지 백그라운드 스레드를; 그러나 나는 정말로 멈추고 싶지 않다.
- 는 모든 스냅 샷 복사본 또는 각 이벤트의 일부 데이터와 스냅 샷에 대한 데이터 바인딩을 취한다. 내 메모리 사용량을 두 배로 늘리지 만 UI가 백그라운드 프로세스를 업데이트하는 동안 기다려야하므로
- 이 syncroot 또는 컬렉션의 어떤 종류의 잠금을 구현합니다. 모든 시간과 단지 .. # 2와 같은 결과를 가지고 시간에하지만 더 오버 헤드
환호 ewart을 한 비트의 데이터를 전달하는 이벤트 어쨌든 작업