Using Dispatcher.Invoke() and the asynchronous method:
public async void InitObservableCollection() { var listFromDAL = await Dispatcher.Invoke(() => Context.GetListAsync()); listFromDAL.ToList().ForEach(i => MyObservableCollection.Add(new Model(i))); } Or without it, launching the synchronous method via Task.Factory.StartNew() :
public async void InitObservableCollection() { var listFromDAL = await Task.Factory.StartNew(() => Context.GetList()); listFromDAL.ToList().ForEach(i => MyObservableCollection.Add(new Model(i))); } Both options work, I do not see much difference.