private async Task GetPeopleForSelectedGroup() { if (SelectedGroup == null) { return; } MainWindow.Log("Loading group persons..."); SelectedGroup.GroupPersons.Clear(); Microsoft.ProjectOxford.Face.Contract.Person[] peops = null; while (true) { try { // ListPersonsInLargePersonGroupAsync also has skip/take overrides peops = await faceServiceClient.ListPersonsInLargePersonGroupAsync(SelectedGroup.Group.LargePersonGroupId); break; } catch (Exception e) { MainWindow.Log($"API rate limit exceeded, retrying"); await Task.Delay(1000); } } if (peops == null) { MainWindow.Log($"failed to get Persons in group"); return; } foreach (var p in peops) { var person = new Controls.PersonExtended { Person = p }; person.PersonFilesDbCount = db.GetFileCountForPersonId(p.PersonId); this.Dispatcher.Invoke(() => { SelectedGroup.GroupPersons.Add(person); }); // Initially loading just one, to save on API calls var guidList = new ConcurrentBag <Guid>(person.Person.PersistedFaceIds.Take(1)); await GetFacesFromServerAsync(person, guidList); } MainWindow.Log("Finished loading group persons"); CheckPeopleInDatabase(); }
private async void Button_Click_1(object sender, RoutedEventArgs e) { var response = await faceServiceClient.ListPersonsInLargePersonGroupAsync(localValue); foreach (var persona in response) { listItems.Add(new Tuple <string, string>(persona.PersonId.ToString(), persona.Name.ToString())); } itemListView.ItemsSource = listItems; }