BackgroundWorker 내에서 필터링하려고하는 WPF ListView가 있습니다. 내 코드는 다음과 같습니다. "다른 스레드가 그것을 소유하고 있기 때문에 호출 스레드가이 개체에 액세스 할 수 없습니다"이 코드는 필터링을 통해 실행 WPF BackgroundWorker ListView 필터 문제
Dim Worker As New BackgroundWorker
AddHandler Worker.DoWork, AddressOf Me.FilterAsync
Me.TextBoxText = Me.TextBox.Text
Worker.RunWorkerAsync(Me.TextBox)
Private Sub FilterAsync(ByVal sender As Object, ByVal e As DoWorkEventArgs)
'
Dim BackgroundWorker As BackgroundWorker = CType(sender, BackgroundWorker)
Dim Text As String = e.Argument.ToString
'
Dim ListView As ListCollectionView = CType(CollectionViewSource.GetDefaultView(Me.ListView.ItemsSource), ListCollectionView)
If Text <> String.Empty Then
ListView.Filter = New Predicate(Of Object)(AddressOf Me.FindItemsAsync)
Else
ListView.Filter = Nothing
End If
'
End Sub
그러나 그것이 오류와 함께 실패
ListView.Filter = New Predicate(Of Object)(AddressOf Me.FindItemsAsync)
여기서 어떤 문제가 발생합니까? BackgroundWorker를 통해 필터링을 통해 샘플을 찾을 수없는 것 같습니다.
업데이트 : 누구나 BackgroundWorker를 사용하여 WPF ListView를 필터링하는 샘플을 알고 있습니까?
좀 더 완벽한 샘플을 제공해 주시겠습니까? 제공된 스 니펫을 사용하면 오류를 재생산 할 수 없으며 다른 결과로 이어질만큼 너무 많이 추측하고 싶지 않습니다. – STW
고마워요! 나는 더 완전한 샘플을 가능한 한 빨리 얻을 수 있도록 노력할 것이다.Stackoverflow가 질문에 많은 양의 코드를 덤핑하는 대신 파일 첨부를 수락하면 좋을 것입니다. WPF ListView를 필터링하기위한 BackgroundWorker가있는 샘플 코드가 있습니까? – Luke
구체적으로 말하자면, 크로스 쓰레드 문제 일 수 있습니다. 그리고 더 완전한 샘플을 통해 문제를 해결하는 방법을 알려줄 수 있습니다. – STW