private async Task GetSuggestionsAsync(string str, SearchSuggestionCollection suggestions)
{
// Cancel the previous suggestion request if it is not finished.
if (currentHttpTask != null)
{
currentHttpTask.AsAsyncOperation<string>().Cancel();
//Debug.WriteLine(" - cancelling task {0} status: {1}", currentHttpTask.Id, currentHttpTask.Status);
}
// Get the suggestions from an open search service.
currentHttpTask = httpClient.GetStringAsync(str);
Debug.WriteLine(" + task created, id: {0} string: {1}", currentHttpTask.Id, str);
string response = await currentHttpTask;
// inject a delay to simulate the time for the web response
await Task.Delay(rand.Next(50, 6000));
JsonArray parsedResponse = JsonArray.Parse(response);
if (parsedResponse.Count > 1)
{
foreach (JsonValue value in parsedResponse[1].GetArray())
{
suggestions.AppendQuerySuggestion(value.GetString());
//Debug.WriteLine("\n Search Result ({0}): {1}", str, value.GetString());
if (suggestions.Size >= MainPage.SearchPaneMaxSuggestions)
{
break;
}
}
}
}