Есть небольшая проблема. При парсинге картинок, долго подгружаются изображения в PictureBox(разрешение 140х215, было бы чему грузится). Иногда быстро грузит, от чего зависит не знаю. Есть ли возможность подгружать их быстрее? Или же сохранять в кэш и после распределять по PictureBox'ам.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using HtmlAgilityPack;
using HtmlDocument = HtmlAgilityPack.HtmlDocument;
namespace ivi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
GetHtmlAsync();
}
private async void GetHtmlAsync()
{
//Boxes
PictureBox[] boxes = {
pictureBox1, pictureBox2, pictureBox3, pictureBox4, pictureBox5, pictureBox6, pictureBox7, pictureBox8, pictureBox9, pictureBox10};
Label[] labels = {
label1, label2, label3, label4, label5, label6, label7, label8, label9, label10};
//Parse
var url = "https://www.ivi.ru/movies/horror";
var httpClient = new HttpClient();
var html = await httpClient.GetStringAsync(url);
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);
var ProductHtml = htmlDocument.DocumentNode.Descendants("ul")
.Where(node => node.GetAttributeValue("class", "")
.Equals("gallery posters-small mobile-has-titles js-criteo-gallery")).ToList();
var ProductlistItems = ProductHtml[0].Descendants("li")
.Where(node => node.GetAttributeValue("class", "")
.Contains("poster")).ToList();
int i = 0;
//Список
foreach (var ProducListItem in ProductlistItems)
{
//Название фильма
var namefilm = ProducListItem.Descendants("span")
.Where(node => node.GetAttributeValue("class", "")
.Equals("name")).FirstOrDefault().InnerText.Trim();
//Картинка фильма
var picturefilm = ProducListItem.Descendants("img").FirstOrDefault().GetAttributeValue("src", "");
//Logs
LogText.Text += namefilm + '\r' + '\n';
LogText.Text += picturefilm + '\r' + '\n';
boxes[i].SizeMode = PictureBoxSizeMode.StretchImage;
boxes[i].ImageLocation = picturefilm;
labels[i].Text = namefilm;
i++;
if (i == 9)
break;
}
}
}
}
Не факт. Картинка весит в среднем по 12 КБ..подгружаю максимум 10 картинок. Не думаю, что сервак 120 Кбайт долго подгрузит.
Вопрос не в весе картинки, а в пинге сервера. Если по какой-то причине задержка на запрос увеличивается, то и 12 КБ будет долго качатся. Точнее качатся будет достаточно быстро, а вот начинать скачивание - долго.
Тебе нужно делать не последовательно запросы а в паралели. Это решит проблему скорости подгрузки. Открой для себя многопоточность и будет тебе счастье :)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Существует ли способ определить факт существования строки, удовлетворяющий двум regex в реальном времениНапример для
Взял пример консольное приложение для вывода уведомлений Windows 10Уведомления показываются, но не остаются в центре уведомлений, как допустим...
Сегодня ходил на собеседование, и одним из вопросов был: