コード例 #1
0
        public void RetrieveGroupProperties(GroupModel group)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }
            group.Properties.EnableSync();

            Task.Factory.StartNew(() =>
            {
                group.Properties.Clear();
                var properties    = repository.GetGroupProperties(group.Name);
                var models        = properties.Select(p => propertyMapper.GetModel(p));
                var modelComparer = KeyComparer <PropertyModel> .OrderBy(p => p.Name);
                foreach (PropertyModel model in models)
                {
                    int index = group.Properties.ToSublist().UpperBound(model, modelComparer);
                    group.Properties.Insert(index, model);
                }
            }).ContinueWith(
                t => onErrorOccurred(t.Exception),
                CancellationToken.None,
                TaskContinuationOptions.OnlyOnFaulted,
                TaskScheduler.FromCurrentSynchronizationContext()
                );
        }