Exemplo n.º 1
0
        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
                        );
                }
            });
        }