I have an ObservableCollection and bind it to a DataGrid on the UI. Now I have a background thread reading from network and updates the ObservableCollection -- but this is not allowed! it says the owner of the ObservableCollection is not the current thread and can not be modified. Isn't this very silly design? I believe most scenario is to update the list from non-ui threads.