Fixed exceptions in indexer and delayed execution logic (#5912)

This commit is contained in:
Arjun Balgovind
2020-08-12 12:44:55 -07:00
committed by GitHub
parent 95e82ca359
commit f3babcb46e
2 changed files with 48 additions and 32 deletions

View File

@@ -512,33 +512,40 @@ namespace PowerLauncher.ViewModel
currentCancellationToken.ThrowIfCancellationRequested();
Parallel.ForEach(plugins, (plugin) =>
{
if (!plugin.Metadata.Disabled)
try
{
var results = PluginManager.QueryForPlugin(plugin, query, true);
currentCancellationToken.ThrowIfCancellationRequested();
if ((results?.Count ?? 0) != 0)
if (!plugin.Metadata.Disabled)
{
lock (_addResultsLock)
{
if (query.RawQuery == _currentQuery.RawQuery)
{
currentCancellationToken.ThrowIfCancellationRequested();
// Remove the original results from the plugin
Results.Results.RemoveAll(r => r.Result.PluginID == plugin.Metadata.ID);
currentCancellationToken.ThrowIfCancellationRequested();
// Add the new results from the plugin
UpdateResultView(results, query, currentCancellationToken);
currentCancellationToken.ThrowIfCancellationRequested();
Results.Sort();
}
}
var results = PluginManager.QueryForPlugin(plugin, query, true);
currentCancellationToken.ThrowIfCancellationRequested();
UpdateResultsListViewAfterQuery(query, true);
if ((results?.Count ?? 0) != 0)
{
lock (_addResultsLock)
{
if (query.RawQuery == _currentQuery.RawQuery)
{
currentCancellationToken.ThrowIfCancellationRequested();
// Remove the original results from the plugin
Results.Results.RemoveAll(r => r.Result.PluginID == plugin.Metadata.ID);
currentCancellationToken.ThrowIfCancellationRequested();
// Add the new results from the plugin
UpdateResultView(results, query, currentCancellationToken);
currentCancellationToken.ThrowIfCancellationRequested();
Results.Sort();
}
}
currentCancellationToken.ThrowIfCancellationRequested();
UpdateResultsListViewAfterQuery(query, true);
}
}
}
catch (OperationCanceledException)
{
// nothing to do here
}
});
}