예제 #1
0
파일: Form1.cs 프로젝트: vukisic/CSharp
        private void RunDownloadParallelSync()
        {
            List <string> list = PrepData();

            Parallel.ForEach <string>(list, (x) => {
                WebsiteDataModel result = DownloadSite(x);
                ReportWebsiteInfo(result);
            });
        }
예제 #2
0
파일: Form1.cs 프로젝트: vukisic/CSharp
        private async Task <WebsiteDataModel> DownloadSiteAsync(string url)
        {
            WebsiteDataModel webSite = new WebsiteDataModel();
            WebClient        client  = new WebClient();

            webSite.Url     = url;
            webSite.Content = await client.DownloadStringTaskAsync(url);

            return(webSite);
        }
예제 #3
0
파일: Form1.cs 프로젝트: vukisic/CSharp
        private WebsiteDataModel DownloadSite(string url)
        {
            WebsiteDataModel webSite = new WebsiteDataModel();
            WebClient        client  = new WebClient();

            webSite.Url     = url;
            webSite.Content = client.DownloadString(url);

            return(webSite);
        }
예제 #4
0
파일: Form1.cs 프로젝트: vukisic/CSharp
        private void RunDownloadSync()
        {
            List <string> list = PrepData();

            foreach (var url in list)
            {
                WebsiteDataModel result = DownloadSite(url);
                ReportWebsiteInfo(result);
            }
        }
예제 #5
0
파일: Form1.cs 프로젝트: vukisic/CSharp
        private async Task <List <WebsiteDataModel> > DownloadParralelAsync(IProgress <ProgressReportModel> progress)
        {
            List <string>           list   = PrepData();
            List <WebsiteDataModel> output = new List <WebsiteDataModel>();
            ProgressReportModel     report = new ProgressReportModel();

            await Task.Run(() => {
                Parallel.ForEach <string>(list, (x) =>
                {
                    WebsiteDataModel result = DownloadSite(x);
                    output.Add(result);
                    report.WebSites = output;
                    report.Progress = (output.Count * 100) / list.Count;
                    progress.Report(report);
                });
            });

            return(output);
        }
예제 #6
0
파일: Form1.cs 프로젝트: vukisic/CSharp
        private async Task <List <WebsiteDataModel> > RunDownloadAsync(IProgress <ProgressReportModel> progress, CancellationToken cancellationToken)
        {
            List <string>           list   = PrepData();
            List <WebsiteDataModel> output = new List <WebsiteDataModel>();
            ProgressReportModel     report = new ProgressReportModel();

            foreach (var url in list)
            {
                WebsiteDataModel result = await DownloadSiteAsync(url);

                output.Add(result);

                cancellationToken.ThrowIfCancellationRequested();

                report.WebSites = output;
                report.Progress = (output.Count * 100) / list.Count;
                progress.Report(report);
            }

            return(output);
        }
예제 #7
0
파일: Form1.cs 프로젝트: vukisic/CSharp
 private void ReportWebsiteInfo(WebsiteDataModel data)
 {
     TextBox.Text += $"{data.Url} downloaded: {data.Content.Length} characters. {Environment.NewLine}";
 }