Example #1
0
        private async Task ReloadLoadedPackagesAsync()
        {
            await TaskUtilities.SwitchToBackgroundThread();

            try {
                var           currentLoadedPackages    = _loadedPackages;
                var           currentInstalledPackages = _installedPackages;
                List <string> loadedPackageNames;
                try {
                    loadedPackageNames = (await _packageManager.GetLoadedPackagesAsync()).OrderBy(n => n).ToList();
                } catch (RHostDisconnectedException) {
                    _coreShell.DispatchOnUIThread(() => AddErrorMessage(Resources.PackageManager_NoLoadedPackagesNoRSession));
                    loadedPackageNames = new List <string>();
                }

                if (loadedPackageNames.Equals(currentLoadedPackages, (n, p) => n.EqualsIgnoreCase(p.Name)))
                {
                    return;
                }

                await UpdateLoadedPackages(currentInstalledPackages, loadedPackageNames);
            } catch (RPackageManagerException ex) {
                _coreShell.DispatchOnUIThread(() => AddErrorMessage(ex.Message));
            }
        }