public override List <T> Execute()
        {
            List <T> result = new List <T>();

            try
            {
                RootListData <T> listData = DownloadPageData(0);
                UpdateData(listData);

                if (listData != null)
                {
                    if (listData.TotalPages > 1 && TaskParameters.DownloadCountType == DownloadCountType.All)
                    {
                        for (int pageIndex = listData.CurrentPage + 1; pageIndex < listData.TotalPages; pageIndex++)
                        {
                            UpdateData(DownloadPageData(pageIndex));
                        }
                    }
                }

                return(Result);
            }
            catch (AggregateException ex)
            {
                var serverException = ex.GetBaseException() as ServerException;

                if (serverException != null)
                {
                    if (serverException.StatusCode == HttpStatusCode.NotFound)
                    {
                        return(result);
                    }
                    else
                    {
                        AppProvider.Log.WriteLine(LogChannel.Exception, ex);
                    }
                }
            }
            catch (Exception ex)
            {
                AppProvider.Log.WriteLine(LogChannel.Exception, ex);
            }

            return(null);
        }
        protected void UpdateData(RootListData <T> data)
        {
            if (data != null)
            {
                Result.AddRange(data.Data);

                if (DynamicList != null)
                {
                    DynamicList.UpdateData(data.Data);
                }

                if (TaskParameters.IsSaveToDb)
                {
                    DbClient.Instance.SaveData <T> (data.Data).ConfigureAwait(false);
                }

                OnSaveData(data.Data);
            }
        }