motkot
@motkot
Программирование C#.

Странные ошибки при запуске метода HtmlAgilityPack.HtmlDocument.LoadHtml. Что делать?

Какие-то страшные ошибки при запуске функции HtmlAgilityPack.HtmlDocument.LoadHtml.

Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
Или
Unexpected error.

То работает, то не работает.

В чем прикол?

Код:

public partial class Form1 : Form
    {
        private ChromiumWebBrowser browser;
        private string html;
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        HtmlNodeCollection node;

        public Form1()
        {
            InitializeComponent();
            InitializeChromium();

            browser.FrameLoadEnd += WebBrowserFrameLoadEnded;
        }

        private async Task<string> GetHTMLFromWebBrowser()
        {
            string TaskHtml = await browser.GetBrowser().MainFrame.GetSourceAsync().ConfigureAwait(false); // cefsharp браузер дает html, не важно.
            return TaskHtml;
        }


        private async void WebBrowserFrameLoadEnded(object sender, FrameLoadEndEventArgs e)
        {
            html = await GetHTMLFromWebBrowser();
  
            if(html != null)
            {
                doc.LoadHtml(html);
                // дальше доходит редко, В 1 из 5 почему-то срабатывает.
             }
        } 
       }
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
Нельзя обращаться к нему из двух потоков одновременно.
Заверни в lock
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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