FairyFox5700
@FairyFox5700

Как использовать Task для парсинга каталога в C#?

У меня есть каталог товаров в интернете.
Я хочу записать данные в базу данных , но без потоков это занимает более 2 часов.
На сайте есть марки авто, далее если перейти на страницу, нажав на название марки, будет несколько моделей, а в моделях соответственно подмодели.
Как использовать Taskи в C# чтобы ускорить этот процесс?
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
@Ascar
static void Main(string[] args)
        {       
            ExampleMyltiTask();
            Console.ReadLine();
        }

       static HttpClient http = new HttpClient();

        static async Task ExampleMyltiTask()
        {

            int pages = 100;
            while (pages-- > 0)
            {
                var tasks = new List<Task>();

                int count = 10;

                while (count-- > 0)
                {
                    var task = Task.Run(async () =>
                    {
                        try
                        {
                            var item = await http.GetStringAsync("item url");
                            //парсинг item
                            // асинхронная запись в бд, например await context.SaveChangesAsync(); 
                            Console.Write("записано" + Environment.NewLine);
                        }
                        catch
                        {
                            //
                            Console.Write("ошибка" + Environment.NewLine);
                        }
                    });

                    tasks.Add(task);
                }

               await Task.WhenAll(tasks);

                //переход на след страницу             
                Console.Write("следующая страница" + Environment.NewLine);
            }
     }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы