private void OnNext(ForumMetadataCollection obj) { // release awaiter this.IsBusy = false; SetOnItemsReady(true); Task<IEnumerable<ThreadDataGroup>>.Run(() => { return ProcessForums(obj); }) .ContinueWith(task => { OnProcessForumsCompleted(task.Result); }, TaskScheduler.FromCurrentSynchronizationContext()); }
private IEnumerable<ThreadDataGroup> ProcessForums(ForumMetadataCollection obj) { List<ThreadDataGroup> list = new List<ThreadDataGroup>(obj.Count); foreach (var metadata in obj) { PinnedForumQuery query = new PinnedForumQuery(metadata.ForumID); NotificationService.Default.Notify(this, query); // categorize each forum ThreadDataGroup forum = new ThreadDataGroup( metadata, query.IsPinned); forum.Group = categories[metadata.Category]; forum.DataType = MainDataModel.DATATYPE_FORUM; // add to this collection list.Add(forum); } return list; }