/ / BackgroundWorker і CollectionViewSource - c #, wpf, багатопотокова редакція, backgroundworker, collectionviewsource

BackgroundWorker і CollectionViewSource - c #, wpf, багатопотокове, backgroundworker, collectionviewsource

Як я можу завантажити свої дані в фоновому режимі під час використання CollectionViewSource? це видає помилку, оскільки мій CollectionViewSource знаходиться в потоці інтерфейсу користувача.

Це весь мій код (Мій фоновий працівник встановлений у Xaml):

public partial class DepartmentsLookup : Window
{
private BackgroundWorker backgroundWorker;
private ObservableCollection<Department> AllDepartmentsData;
private ListCollectionView AllDepartmentsView;

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
IEnumerable<Department> data = null;
using (ArchiveEntities db = new ArchiveEntities())
{
data = db.Departments;
this.AllDepartmentsData = new ObservableCollection<Department>(data);
}
CollectionViewSource departmentsSource = (CollectionViewSource)this.FindResource("AllDepartmentsDataSource");
departmentsSource.Source = this.AllDepartmentsData;
this.AllDepartmentsView = (ListCollectionView)departmentsSource.View;
}

public DepartmentsLookup()
{
InitializeComponent();
backgroundWorker = ((BackgroundWorker)this.FindResource("backgroundWorker"));
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
backgroundWorker.RunWorkerAsync();
}
}

крім

Відповіді:

2 для відповіді № 1

Вам потрібно працювати з об'єктом диспетчера WPF (Dispatcher.Invoke), щоб виконувати код на елементах інтерфейсу (коли це робиться з фоном BackgroundWorker). Ця стаття може дати вам більше інформації.

Or робота з диспетчером WPF.