Я не уверен, будет ли это популярным предложением, но вы можете лениво создавать и подписываться на свою коллекцию.Тогда при первом доступе к NwCustomers из потока пользовательского интерфейса все будет правильно запущено.
public AlphaProductesVM (){}
public ObservableCollection<Alphabetical_list_of_product> NwCustomers
{
get {
if(_NwCustomers == null)
{
_NwCustomers = new ObservableCollection<Alphabetical_list_of_product>();
var repository = new NorthwindRepository();
repository
.GetAllProducts()
.ObserveOn(SynchronizationContext.Current)
.Subscribe(AddElement);
}
return _NwCustomers;
}
}
или, если вы внедрили диспетчер потока пользовательского интерфейса в модель представления, вы можете подписаться на это в конструкторе.
var repository = new NorthwindRepository();
repository
.GetAllProducts()
.ObserveOn(theUIdispatcher)
.Subscribe(AddElement);