AngleSharp не удается получить данные сайта

130
16 января 2021, 09:10

Простейший пример, взят с сайта библиотеки.

class MainClass
{
    static async void Test()
    {
        try
        {
            var config = Configuration.Default.WithDefaultLoader();
            var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes";
            var context = BrowsingContext.New(config);
            var document = await context.OpenAsync(address);
            Console.WriteLine(document.Title);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    public static void Main(string[] args)
    {
        Test();
    }
}

На строке:

var document = await context.OpenAsync(address);

Происходит вылет из метода. Это не исключение, блоком try catch не отлавливается. В логе следующее:

Почему так происходит и как это исправить?

Раньше такого не было. Версия библиотеки последняя.

Answer 1

Ну так это асинхронное программирование.

Когда выполнение доходит до await происходит возвращение из метода, что бы выполнить какую-либо полезную работу дальше, пока IO выполняется.

Тут я вижу следующие проблемы:

  1. Вы возвращаете void => вы не можете дождаться снаружи выполнения данного метода
  2. Вы не ждете конца в Main(да и не можете по первой причине)

Решения: Либо делайте его полностью синхронным и вызывайте простой метод Open, который блокирует поток, либо доводите дело до конца исправя ошибки.

READ ALSO
Как проверить ключ на равенство со значением Dictionary, listbox C#

Как проверить ключ на равенство со значением Dictionary, listbox C#

Всем приветПомогите пожалуйста с Dictionary

116
(C#) Конвертация HTML сайта в PDF

(C#) Конвертация HTML сайта в PDF

Как можно максимально качественно конвертировать HTML в PDF? Есть на подобии код С#: opf2 - open file dialog (html)

113
Как правильно сравнить тип сущности в Entity Framework

Как правильно сравнить тип сущности в Entity Framework

Есть классы User, Accountant и Customer который наследуют класс PersonНужно получит все Person который на является Customer

110
TcpListener проблема принятия данных

TcpListener проблема принятия данных

Проблема с передачей данных через BinaryReader/BinaryWriter

111