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 })); }