diff --git a/WelsonJS.Toolkit/WelsonJS.Launcher/ResourceTools/Completion.cs b/WelsonJS.Toolkit/WelsonJS.Launcher/ResourceTools/Completion.cs index f28f985..5ff7ecf 100644 --- a/WelsonJS.Toolkit/WelsonJS.Launcher/ResourceTools/Completion.cs +++ b/WelsonJS.Toolkit/WelsonJS.Launcher/ResourceTools/Completion.cs @@ -26,9 +26,9 @@ namespace WelsonJS.Launcher.ResourceTools Server = server; _httpClient = httpClient; - Task.Run(() => DiscoverFromInstalledSoftware()); - Task.Run(() => DiscoverFromPathVariable()); - Task.Run(() => DiscoverFromProgramDirectories()); + Task.Run(async () => await SafeDiscoverAsync(DiscoverFromInstalledSoftware)); + Task.Run(async () => await SafeDiscoverAsync(DiscoverFromPathVariable)); + Task.Run(async () => await SafeDiscoverAsync(DiscoverFromProgramDirectories)); } public bool CanHandle(string path) @@ -182,6 +182,18 @@ namespace WelsonJS.Launcher.ResourceTools DiscoveredExecutables.Add(executableFile); } } + + private async Task SafeDiscoverAsync(Action discoveryMethod) + { + try + { + await Task.Run(discoveryMethod); + } + catch (Exception ex) + { + Trace.TraceError($"Discovery failed: {ex.Message}"); + } + } } public class CompletionItem