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)); } }