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();
        }
Beispiel #2
0
        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;
        }