Beispiel #1
0
 public MainViewModel()
 {
     ReportCollection   = new ObservableCollection <UrlReportViewModel>();
     mUrlReportBuilder  = new UrlReportBuilder();
     mUrlRequestService = new UrlRequestService();
     mUrlParseService   = new UrlParseService();
     UrlFilePath        = Constants.cUrlFilePath;
 }
 /// <summary>
 /// Запрос на отмену операции обработки
 /// </summary>
 public async Task CancelRequest()
 {
     await Task.Run(() =>
     {
         this.mCancellationTokenSource.Cancel();
         this.mMaxReferenceCountSelectDelegateInvoker = null;
         this.mUrlRequestService = null;
         this.mUrlParseService   = null;
         this.RequestWrapper     = null;
     });
 }
 public UrlReportViewModel(
     UrlRequestService urlRequestService,
     UrlParseService urlParseService,
     MaxReferenceCountSelectDelegate maxReferenceCountSelectDelegate)
 {
     mMaxReferenceCountSelectDelegateInvoker = maxReferenceCountSelectDelegate;
     mUrlRequestService  = urlRequestService;
     mUrlParseService    = urlParseService;
     this.RequestWrapper = new WrapAsyncResult <int?>((source, completionSource) =>
     {
         mCancellationTokenSource = source;
     });
 }
        /// <summary>
        /// Получение списка url
        /// </summary>
        /// <param name="urlFilePath"></param>
        /// <param name="urlRequestService"></param>
        /// <param name="urlParseService"></param>
        /// <param name="maxReferenceSelectDelegate"></param>
        /// <returns></returns>
        public async Task <IEnumerable <UrlReportViewModel> > GetUrlReportsAsync(
            string urlFilePath,
            UrlRequestService urlRequestService,
            UrlParseService urlParseService,
            MaxReferenceCountSelectDelegate maxReferenceSelectDelegate)
        {
            Func <Task <IEnumerable <string> > > getUrlsFunc = async() => await mUrlFileReadService.GetUrlsAsync(urlFilePath);

            IEnumerable <string> urls = await getUrlsFunc.WithTry(Enumerable.Empty <string>, (str) => MessageBox.Show(str, "Ошибка чтения файла", MessageBoxButton.OK, MessageBoxImage.Error));

            return(urls.Select(x => new UrlReportViewModel(urlRequestService, urlParseService, maxReferenceSelectDelegate)
            {
                Url = x
            }));
        }