ICollectionView.filter do WPF com grandes conjuntos de dados

Estou trabalhando em um aplicativo wpf que contém uma lista de exibição com muitas linhas de dados (10.000 a 100.000). O usuário pode aplicar todos os tipos de filtros a essa exibição de lista, tornando a lógica do filtro bastante avançada (e lenta). Por enquanto, a parte relevante do meu código fica assim:

ICollectionView view = CollectionViewSource.GetDefaultView(hugeList.ItemsSource);
view.Filter = new Predicate<object>(FilterCallback);

private bool FilterCallback(object item)
{
  //Filter logic
}

Mas isso é executado no thread da interface do usuário e bloqueia o aplicativo inteiro ao filtrar, o que proporciona uma experiência muito ruim ao usuário. Portanto, minha pergunta a todos é: alguém conhece uma maneira 'melhor' de filtrar uma exibição de lista no wpf ou devo filtrar o @ subjacenObservableCollection em vez de

questionAnswers(2)

yourAnswerToTheQuestion