Exemple #1
0
        public void RetrieveGroupMembers(GroupModel group)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }
            if (groupMapper.AreUsersLoaded(group))
            {
                return;
            }
            group.Users.EnableSync();

            Task.Factory.StartNew(() =>
            {
                group.Users.Clear();
                var users         = repository.GetGroupMembers(group.Name);
                var userModels    = users.Select(u => userMapper.GetModel(u, includeDummy: false));
                var modelComparer = KeyComparer <UserModel> .OrderBy(m => m.FullName);
                foreach (UserModel model in userModels)
                {
                    int index = group.Users.ToSublist().UpperBound(model, modelComparer);
                    group.Users.Insert(index, model);
                }
            }).ContinueWith(
                t => onErrorOccurred(t.Exception),
                CancellationToken.None,
                TaskContinuationOptions.OnlyOnFaulted,
                TaskScheduler.FromCurrentSynchronizationContext()
                );
        }