private async Task <FetchRowsResult> FetchRows(int page, CancellationToken cancellationToken)
        {
            try
            {
                CancellationToken linkedToken = BackgroundOperation.Register(this, cancellationToken);
                if (page == 1)
                {
                    await Task.Delay(500);
                }

                List <T> result = await RunAsync(() => FetchPage.Invoke(page, linkedToken));

                PageCount = result.Capacity;
                PageSource.UpdateSummaries();

                return(new FetchRowsResult(result.Cast <object>().ToArray()));
            }
            catch (TaskCanceledException)
            {
                return(new FetchRowsResult(new object[] { }));
            }
            finally
            {
                BackgroundOperation.UnRegister(this);
            }
        }
        private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var recordPage = new FetchPage(repository);

            this.Hide();
            recordPage.Show();
        }
예제 #3
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="maxNumItems">max number of items</param>
 /// <param name="fetchPageDelegate">the delegate that fetches a page</param>
 public PageFetcher(BigInteger maxNumItems, FetchPage fetchPageDelegate)
 {
     MaxNumItems            = maxNumItems;
     this.fetchPageDelegate = fetchPageDelegate;
 }
예제 #4
0
 public PageFetcher(long maxNumItems, FetchPage fetchPageDelegate)
 {
     MaxNumItems            = maxNumItems;
     this.fetchPageDelegate = fetchPageDelegate;
 }