﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / .NET / VB.NET  / Срочно нужна помощь с WebBrowser контролем / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Sat, 19 Jul 2008 06:54:45 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Срочно нужна помощь с WebBrowser контролем</title><link>http://relib.com/forums/Topic903453-27-1.aspx</link><description>Вопрос решился по-идиотски просто когда я создал новую форму совершенно с нуля, при этом используя те же контроли, названия и код (просто скопировал), а старую форму просто удалил.&lt;P&gt;После такой манипуляции все заработало и больше ошибок не выдает. Очевидно, что ошибка пряталась где-то внутри ресурсов этой формы, т.е. это ошибка Васика. Выходит, что связи с WebBrowser-ом в общем то и нет?!&lt;/P&gt;&lt;P&gt;Хотя и итересно было-бы узнать, этим страдает только VB Express или в Studio те же проблемы?</description><pubDate>Wed, 30 Aug 2006 19:27:34 GMT</pubDate><dc:creator>kpoxa</dc:creator></item><item><title>Срочно нужна помощь с WebBrowser контролем</title><link>http://relib.com/forums/Topic903453-27-1.aspx</link><description>Проблема состоит в том, что этот конроль может инициироваться только в single threading apartment. В моей же программе используются несколько потоков.&lt;P&gt;Так вот, в определенный момент необходимо открыть форму с WebBrowser контролем на ней и окрыть заданную пользователем веб страницу. В многопоточном режиме WB ругается и выбивает программу.&lt;/P&gt;&lt;P&gt;Для обхода, я использовал новый поток, который я вручную перевожу в однопоточный режим, запускаю его и жду его окончания.&lt;/P&gt;&lt;P&gt;[code]&lt;BR&gt;Dim t As New Thread(AddressOf ShowDlgThreadProc)&lt;BR&gt;t.SetApartmentState(ApartmentState.STA)&lt;/P&gt;&lt;P&gt;t.Start()&lt;BR&gt;t.Join()&lt;/P&gt;&lt;P&gt;&lt;BR&gt;[/code]&lt;/P&gt;&lt;P&gt;Фунция потока выглядит так&lt;/P&gt;&lt;P&gt;[code]&lt;BR&gt;Private Sub ShowDlgThreadProc()&lt;BR&gt;Dim dlg As New frmWebBrowser&lt;BR&gt;Dim retVal As EnumExecStatus = EnumExecStatus.Passed&lt;/P&gt;&lt;P&gt;dlg.URL = URL&lt;/P&gt;&lt;P&gt;If (dlg.ShowDialog() = DialogResult.Cancel) Then retVal = EnumExecStatus.Failed&lt;/P&gt;&lt;P&gt;dlg.Dispose()&lt;BR&gt;dlg = Nothing&lt;/P&gt;&lt;P&gt;ExecutionStatus = retVal&lt;/P&gt;&lt;P&gt;End Sub&lt;/P&gt;&lt;P&gt;[/code]&lt;/P&gt;&lt;P&gt;Все работает прекрасно, форма открывается, необходимая веб страница показывается, но ...&lt;/P&gt;&lt;P&gt;...Если пользователь вводит вместо веб адреса, к примеру, локальный путь к директории (например C:\TEMP), то тут возникает проблема. С точки зрения WebBrowser это верный путь и он способен его показать. Если пользователь не выделяет или, тем более, не пытается открыть какой нибудь файл, то после закрытия формы поток заканчивает свою работу правильно и ошибок не возникает.&lt;/P&gt;&lt;P&gt;Но стоит пользователю просто кликнуть один раз внутри WB, то после закрытия формы и окончания функции выбрасывается сообщение об ошибке и дальнейшее выполнение программы невозможно.&lt;/P&gt;&lt;P&gt;Ошибка такая&lt;BR&gt;No symbols are loaded for any call stack frame. The source code cannot  be displayed.&lt;/P&gt;&lt;P&gt;После закрытия этого сообщения в IDE появляется окно Exception со следующим текстом.&lt;BR&gt;LoaderLock was detected&lt;BR&gt;Message: Attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang.&lt;BR&gt;&lt;/P&gt;&lt;P&gt;Из IDE можно нажать Продолжить и закончить работу правильно, но при самостоятельном выполнении программы на этом все и заканчивается.&lt;/P&gt;&lt;P&gt;Вопросы будут такие&lt;BR&gt;1. Возможно ли другим способом (отличным от приведенного выше) использования этого объекта в много-поточном приложении?&lt;/P&gt;&lt;P&gt;2. Как и где можно попытаться отловить эту ошибку/исключение, чтобы в любом случае продолжить нормальную работу?&lt;/P&gt;&lt;P&gt;3. Если не 1 или 2, то как можно ограничить доступ к локальным директориям для WB контроля?&lt;/P&gt;&lt;P&gt;Спасибо&lt;/P&gt;</description><pubDate>Mon, 28 Aug 2006 17:31:51 GMT</pubDate><dc:creator>kpoxa</dc:creator></item></channel></rss>