private async Task ReloadInstalledAndLoadedPackagesAsync() { _installedAndLoadedLock.ResetIfNotWaiting(); var areLoaded = await _installedAndLoadedLock.WaitAsync(); try { if (!areLoaded) { await LoadInstalledAndLoadedPackagesAsync(); } } catch (RPackageManagerException ex) { _coreShell.DispatchOnUIThread(() => AddErrorMessage(ex.Message)); } finally { _installedAndLoadedLock.Release(); } }