/// <summary> /// Occurs when RunWorkerAsync is called. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="DoWorkEventArgs"/> instance containing the event data.</param> private void LoadVendorsBackground(object sender, DoWorkEventArgs e) { IVendorRepository vendorRepository = new VendorRepository(); BackgroundWorker source = (BackgroundWorker)sender; var results = vendorRepository.GetAllVendors(); int index = 0; foreach (var item in results) { Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(delegate { })); source.ReportProgress(++index, item); } }