Asynchronously adding to ObservableCollection (or an alternative)
Since your ObservableCollection
is bound to UI hence it gets generated on UI thread so any further updates (delete/add/clear) have to be on the same UI thread. It doesn't allow updates from another thread.
However, what you can do is to create an instance of your class (or all time consuming operation on background thread) and once you are done, add the object in ObservableCollection using Dispatcher
of your UI thread like this -
App.Current.Dispatcher.BeginInvoke((Action)delegate()
{
observableCollection.Add(instanceOfYourClass);
});
What Dispatcher do is put the operation on its associated thread. Hence, the item will always be added on UI thread but can be created in background thread.
Here are few links which might get you going - Updating from BW and the other one is here
With .net 4.5 you can use EnableCollectionSynchronization
object lockObj = new object();
BindingOperations.EnableCollectionSynchronization(yourObservableCollection, lockObj);