Проблемы WebBrowser - InvalidOperationException при навигации - PullRequest
0 голосов
/ 14 октября 2011

У меня есть многопоточное приложение, которое использует элемент управления WebBrowser, размещенный в простом окне WPF.

В первый раз, когда я создаю окно и отображаю его - все в порядке.Однако - когда я пытаюсь открыть его несколько раз (обычно в третий раз ...), я получаю и Исключение недопустимой операции, когда пытаюсь вызвать метод Navigate WebBrowser.

Я попытался прочитать о некоторыхэто и я думаю, что это связано с DEP и COM-объектом, стоящим за WebBrowser.

Я подумал, что, возможно, это связано с предыдущими WebBrowsers, поэтому я решил использовать его по-разному, например::

brws.DocumentCompleted -= new System.Windows.Forms.
    WebBrowserDocumentCompletedEventHandler(brws_DocumentCompleted);
brws.Stop();
brws.DocumentText = "";
this.brws.Dispose();

Но это не помогает ...

Может, кто-нибудь видел эту ошибку и знает, как ее решить?

Вот точные данные об ошибке:

Исключение не обработано: System.AccessViolationException: System.AccessViolationException: Попытка чтения или записи в защищенную память.Это часто указывает на то, что другая память повреждена.

at- System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2 (Object & U RL, Object & flags, Object & targetFrameName, Object & postData, Object & headers)

at- System.Windows.Forms.WebBrowser.PerformNavigate2 (Object & URL, Object & flags, Object & targetFrameName, Object & postData, Object & headers)

at- System.Windows.Forms.WebBrowser.PerformNavigateHelper (StringurlString, B new, newWindow, String targetFrameName, Byte [] postData, строковые заголовки)

at- System.Windows.Forms.WebBrowser.Navigate (String urlString)

at- Slider.HtmlWindow..ctor (String url) at- D: \ rapid \ Projects \ HTMLSlider \ Slide r \ HtmlWindow.xaml.cs: строка 24

at- Slider.Program. <> c_ DisplayClasse.b _3 () at- D: \ rapid \ Projects \ HTMLSlider \ Slider \ Program.cs: строка 123

at- System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта)

в- System.Threading.ExecutionContext.Run (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта)

at- System.Threading.ThreadHelper.ThreadStart ()

1 Ответ

0 голосов
/ 26 октября 2011

Я не мог найти решение этой проблемы.

Вероятно, существует внутренняя проблема при удалении одного веб-браузера в приложении и последующем создании другого.

Мое решение состояло в том, чтобы изменить мой код для повторного использования веб-браузеров вместо создания новых. Теперь, когда нет утилизации WebBrowsers, нет проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...