Я использую элемент управления webBrowser
для отображения данных журнала в виде HTML в пользовательском элементе управления в форме на C #.По большей части я использую DOM через HtmlElement
объекты и т. Д. Но когда я инициализирую элемент управления, я настраиваю некоторые стили, устанавливая свойство webBrowser.DocumentText
.
Моя проблема заключается в том, что при использовании webBrowser.navigate
или webBrowser.DocumentText
эти действия, по-видимому, выполняются внутри другого потока в элементе управления webBrowser
.Поэтому, когда я инициализирую свой элемент управления и пытаюсь немедленно добавить HtmlElements
через DOM, он не работает, потому что документ еще не инициализирован.Я мог бы дождаться события documentComplete
, но я оборачиваю все это в пользовательский элемент управления, и было бы плохим этикетом заставить кого-то подписаться на событие просто для того, чтобы убедиться, что элемент управления инициализирован.Однако доступ к веб-документу через DOM, похоже, блокирует текущий поток, что мне и нужно.
Вопросы:
- Есть ли способ сообщить
webBrowser
о блокировке доон завершил инициализацию своего документа? - Есть ли способ инициализировать документ
webBrowser
исключительно через вызовы DOM?то есть, не используя webBrowser.navigate
или webBrowser.DocumentText
РЕДАКТИРОВАТЬ Я пробовал это, это просто блокирует навсегда, я предполагаю, что для чего-то вроде этого вам понадобится несколько потоков?:
this.webBrowser.Navigate("about:blank");
while (this.webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
Thread.Sleep(100);
}