Exemplo n.º 1
0
        /// <summary>
        /// 最新のまとめ記事より前のまとめ記事を読み込みます。
        /// </summary>
        /// <returns>非同期操作を示す <see cref="System.Threading.Tasks.Task"/>。</returns>
        public Task LoadPreviousAsync()
        {
            this.Dispatcher.BeginInvoke(() => this.RaiseAsyncStarted());
            var repository = new MatomeEntryRepository();
            var max        = this.Items.LastOrDefault();

            return(repository.GetAsync(maxId: max == null ? (Guid?)null : max.EntryId)
                   .ContinueWith(
                       task => this.Dispatcher.BeginInvoke(
                           parameter => {
                if (parameter != null)
                {
                    this.Items.AddRangeIf(parameter.OrderByDescending(x => x.CreatedAt), x => x.CreatedAt);
                    this.RaiseAsyncCompleted();
                }
                else
                {
                    this.RaiseAsyncError(null);
                }
            },
                           task.Result),
                       TaskContinuationOptions.OnlyOnRanToCompletion)
                   .ContinueWith(
                       task => this.Dispatcher.BeginInvoke(() => this.RaiseAsyncError(task.Exception)),
                       TaskContinuationOptions.NotOnRanToCompletion));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 最新のまとめ記事を読み込みます。
        /// </summary>
        /// <returns>非同期操作を示す <see cref="System.Threading.Tasks.Task"/>。</returns>
        public Task LoadLatestAsync()
        {
            this.Dispatcher.BeginInvoke(() => this.RaiseAsyncStarted());
            var repository = new MatomeEntryRepository();

            return(repository.GetAsync()
                   .ContinueWith(
                       task => this.Dispatcher.BeginInvoke(
                           parameter => {
                if (parameter != null)
                {
                    this.Items.InsertRangeIf(0, parameter.OrderByDescending(x => x.CreatedAt), x => x.CreatedAt);
                    this.RaiseAsyncCompleted();
                }
                else
                {
                    this.RaiseAsyncError(null);
                }
            },
                           task.Result),
                       TaskContinuationOptions.OnlyOnRanToCompletion)
                   .ContinueWith(
                       task => this.Dispatcher.BeginInvoke(() => this.RaiseAsyncError(task.Exception)),
                       TaskContinuationOptions.NotOnRanToCompletion));
        }