주어진 오류 메시지, "이 유형은 CollectionView는 Dispatcher 스레드와 다른 스레드에서 SourceCollection에 대한 변경 사항을 지원하지 않습니다."는 비UI 스레드에서 ObservableCollection을 수정하려는 시도를 나타냅니다.
제공된 코드에 설명된 대로 ViewModel의 Load( ) 메서드는 GetMatchDetailsDC 개체 목록에서 _matchObsCollection ObservableCollection을 채웁니다. 그러나 이 업데이트는 UI 스레드 외부에서 수행됩니다.
WPF에서는 DataGrid와 같은 UI 요소가 UI 스레드에서 생성되고 스레드 친화력. 스레드 안전을 보장하려면 이러한 요소에 대한 모든 수정을 UI 스레드에서 수행해야 합니다.
이 문제를 해결하려면 App.Current.Dispatcher.Invoke(( Action)delegate { ... }) UI 스레드에서 컬렉션 업데이트를 호출하는 메서드:
matchList = proxy.GetMatch().ToList();
foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList)
{
App.Current.Dispatcher.Invoke((Action)delegate // WPF의 비동기 데이터 로드
데이터 로드에 비동기 메서드를 사용하는 것이 일반적이지만 UI가 아닌 스레드에서 UI 요소를 조작할 때 스레드 안전성을 고려하는 것이 중요합니다. 스레드 관련 오류를 방지하려면 항상 ObservableCollection 수정과 같은 UI 요소 업데이트가 UI 스레드에서 수행되는지 확인하세요.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3