diff --git a/src/modules/launcher/PowerLauncher/Plugin/PluginManager.cs b/src/modules/launcher/PowerLauncher/Plugin/PluginManager.cs index 8280527abc..12e2a3cfd7 100644 --- a/src/modules/launcher/PowerLauncher/Plugin/PluginManager.cs +++ b/src/modules/launcher/PowerLauncher/Plugin/PluginManager.cs @@ -24,6 +24,7 @@ namespace PowerLauncher.Plugin { private static readonly IFileSystem FileSystem = new FileSystem(); private static readonly IDirectory Directory = FileSystem.Directory; + private static readonly object AllPluginsLock = new object(); private static IEnumerable _contextMenuPlugins = new List(); @@ -44,7 +45,13 @@ namespace PowerLauncher.Plugin { if (_allPlugins == null) { - _allPlugins = PluginsLoader.Plugins(PluginConfig.Parse(Directories)); + lock (AllPluginsLock) + { + if (_allPlugins == null) + { + _allPlugins = PluginsLoader.Plugins(PluginConfig.Parse(Directories)); + } + } } return _allPlugins; diff --git a/src/modules/launcher/PowerLauncher/Plugin/PluginsLoader.cs b/src/modules/launcher/PowerLauncher/Plugin/PluginsLoader.cs index 44434135ad..2b51e114e0 100644 --- a/src/modules/launcher/PowerLauncher/Plugin/PluginsLoader.cs +++ b/src/modules/launcher/PowerLauncher/Plugin/PluginsLoader.cs @@ -27,7 +27,9 @@ namespace PowerLauncher.Plugin public static IEnumerable CSharpPlugins(List source) { var plugins = new List(); - var metadatas = source.Where(o => o.Language.ToUpperInvariant() == AllowedLanguage.CSharp); + var metadatas = source + .Where(o => o.Language.ToUpperInvariant() == AllowedLanguage.CSharp) + .ToList(); foreach (var metadata in metadatas) {