[Run] Fix for IndexOutOfBounds exception (#6981)

* Fix index out of bounds exception

* Race condition in query telemetry
This commit is contained in:
Divyansh Srivastava
2020-10-05 09:50:41 -07:00
committed by GitHub
parent 5d095efe90
commit ea0de4f831

View File

@@ -500,6 +500,9 @@ namespace PowerLauncher.ViewModel
{
Thread.Sleep(20);
// Keep track of total number of results for telemetry
var numResults = 0;
// Contains all the plugins for which this raw query is valid
var plugins = pluginQueryPairs.Keys.ToList();
@@ -535,6 +538,7 @@ namespace PowerLauncher.ViewModel
}
currentCancellationToken.ThrowIfCancellationRequested();
numResults = Results.Results.Count;
Results.Sort();
Results.SelectedItem = Results.Results.FirstOrDefault();
}
@@ -573,6 +577,7 @@ namespace PowerLauncher.ViewModel
UpdateResultView(results, queryText, currentCancellationToken);
currentCancellationToken.ThrowIfCancellationRequested();
numResults = Results.Results.Count;
Results.Sort();
Results.SelectedItem = Results.Results.FirstOrDefault();
}
@@ -598,7 +603,7 @@ namespace PowerLauncher.ViewModel
var queryEvent = new LauncherQueryEvent()
{
QueryTimeMs = queryTimer.ElapsedMilliseconds,
NumResults = Results.Results.Count,
NumResults = numResults,
QueryLength = queryText.Length,
};
PowerToysTelemetry.Log.WriteEvent(queryEvent);
@@ -611,7 +616,13 @@ namespace PowerLauncher.ViewModel
_currentQuery = _emptyQuery;
Results.SelectedItem = null;
Results.Visibility = Visibility.Hidden;
Results.Clear();
Task.Run(() =>
{
lock (_addResultsLock)
{
Results.Clear();
}
});
}
}