private async Task RefreshPackagesAsync() { IEnumerable <DBPackageView> views; try { views = DBPackageView.FromModuleList( await _provider.EnumerateAllModules(), await _provider.EnumerateStdLibModules(), _provider.Factory ).ToList(); } catch (InvalidOperationException) { // Configuration is invalid, so don't display any packages return; } if (_packages == null) { lock (_packagesLock) { _packages = _packages ?? new ObservableCollection <DBPackageView>(); } } await Dispatcher.InvokeAsync(() => { lock (_packagesLock) { _packages.Merge( views, DBPackageViewComparer.Instance, DBPackageViewComparer.Instance ); } }); }